xen: mark grant mapped pages as foreign

Use the "foreign" page flag to mark pages that have a grant map.  Use
page->private to store information of the grant (the granting domain
and the grant reference).

Signed-off-by: Jennifer Herbert <jennifer.herbert@citrix.com>
Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
This commit is contained in:
Jennifer Herbert
2014-12-24 14:17:06 +00:00
committed by David Vrabel
parent ff4b156f16
commit 8da7633f16
3 changed files with 61 additions and 9 deletions

View File

@@ -45,6 +45,8 @@
#include <asm/xen/hypervisor.h>
#include <xen/features.h>
#include <linux/mm_types.h>
#include <linux/page-flags.h>
#define GNTTAB_RESERVED_XENSTORE 1
@@ -185,4 +187,22 @@ int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops,
void gnttab_batch_map(struct gnttab_map_grant_ref *batch, unsigned count);
void gnttab_batch_copy(struct gnttab_copy *batch, unsigned count);
struct xen_page_foreign {
domid_t domid;
grant_ref_t gref;
};
static inline struct xen_page_foreign *xen_page_foreign(struct page *page)
{
if (!PageForeign(page))
return NULL;
#if BITS_PER_LONG < 64
return (struct xen_page_foreign *)page->private;
#else
BUILD_BUG_ON(sizeof(struct xen_page_foreign) > BITS_PER_LONG);
return (struct xen_page_foreign *)&page->private;
#endif
}
#endif /* __ASM_GNTTAB_H__ */