[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/mm: PGC_page_table is used by shadow code only
By defining the constant to zero when !SHADOW_PAGING we give compilers the chance to eliminate a little more dead code elsewhere in the tree. Plus, as a minor benefit, the general reference count can be one bit wider. (To simplify things, have PGC_page_table change places with PGC_extra.) Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- tboot.c's update_pagetable_mac() is suspicious: It effectively is a no-op even prior to this change when !SHADOW_PAGING, which can't be quite right. If (guest) page tables are relevant to include in the verification, shouldn't this look for PGT_l<N>_page_table as well? How to deal with HAP guests there is entirely unclear. --- a/xen/arch/x86/include/asm/mm.h +++ b/xen/arch/x86/include/asm/mm.h @@ -70,9 +70,9 @@ /* Page is Xen heap? */ #define _PGC_xen_heap PG_shift(2) #define PGC_xen_heap PG_mask(1, 2) - /* Set when is using a page as a page table */ -#define _PGC_page_table PG_shift(3) -#define PGC_page_table PG_mask(1, 3) + /* Page is not reference counted */ +#define _PGC_extra PG_shift(3) +#define PGC_extra PG_mask(1, 3) /* Page is broken? */ #define _PGC_broken PG_shift(4) #define PGC_broken PG_mask(1, 4) @@ -83,12 +83,20 @@ #define PGC_state_offlined PG_mask(2, 6) #define PGC_state_free PG_mask(3, 6) #define page_state_is(pg, st) (((pg)->count_info&PGC_state) == PGC_state_##st) -/* Page is not reference counted */ -#define _PGC_extra PG_shift(7) -#define PGC_extra PG_mask(1, 7) +#ifdef CONFIG_SHADOW_PAGING + /* Set when is using a page as a page table */ +#define _PGC_page_table PG_shift(7) +#define PGC_page_table PG_mask(1, 7) +#else +#define PGC_page_table 0 +#endif /* Count of references to this frame. */ +#if PGC_page_table #define PGC_count_width PG_shift(7) +#else +#define PGC_count_width PG_shift(6) +#endif #define PGC_count_mask ((1UL<<PGC_count_width)-1) /*
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |