[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 03/10] xen/arm: introduce PGC_reserved
In order to differentiate pages of static memory, from those allocated from heap, this patch introduces a new page flag PGC_reserved to tell. New struct reserved in struct page_info is to describe reserved page info, that is, which specific domain this page is reserved to. Helper page_get_reserved_owner and page_set_reserved_owner are designated to get/set reserved page's owner. Struct domain is enlarged to more than PAGE_SIZE, due to newly-imported struct reserved in struct page_info. Signed-off-by: Penny Zheng <penny.zheng@xxxxxxx> --- xen/include/asm-arm/mm.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h index 0b7de3102e..d8922fd5db 100644 --- a/xen/include/asm-arm/mm.h +++ b/xen/include/asm-arm/mm.h @@ -88,7 +88,15 @@ struct page_info */ u32 tlbflush_timestamp; }; - u64 pad; + + /* Page is reserved. */ + struct { + /* + * Reserved Owner of this page, + * if this page is reserved to a specific domain. + */ + struct domain *domain; + } reserved; }; #define PG_shift(idx) (BITS_PER_LONG - (idx)) @@ -108,6 +116,9 @@ struct page_info /* Page is Xen heap? */ #define _PGC_xen_heap PG_shift(2) #define PGC_xen_heap PG_mask(1, 2) + /* Page is reserved, referring static memory */ +#define _PGC_reserved PG_shift(3) +#define PGC_reserved PG_mask(1, 3) /* ... */ /* Page is broken? */ #define _PGC_broken PG_shift(7) @@ -161,6 +172,9 @@ extern unsigned long xenheap_base_pdx; #define page_get_owner(_p) (_p)->v.inuse.domain #define page_set_owner(_p,_d) ((_p)->v.inuse.domain = (_d)) +#define page_get_reserved_owner(_p) (_p)->reserved.domain +#define page_set_reserved_owner(_p,_d) ((_p)->reserved.domain = (_d)) + #define maddr_get_owner(ma) (page_get_owner(maddr_to_page((ma)))) #define frame_table ((struct page_info *)FRAMETABLE_VIRT_START) -- 2.25.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |