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:

committed by
David Vrabel

parent
ff4b156f16
commit
8da7633f16
@@ -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__ */
|
||||
|
Reference in New Issue
Block a user