From: Jan Beulich Date: Fri, 20 Aug 2021 10:28:07 +0000 (+0200) Subject: x86/PV: account for 32-bit Dom0 in mark_pv_pt_pages_rdonly()'s ASSERT()s X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~273 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9ee27aa7a2bab460769a6621895898ba3a7fb445;p=xen.git x86/PV: account for 32-bit Dom0 in mark_pv_pt_pages_rdonly()'s ASSERT()s Clearly I neglected the special needs here, and also failed to test the change with a debug build of Xen. Fixes: 6b1ca51b1a91 ("x86/PV: assert page state in mark_pv_pt_pages_rdonly()") Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c index 6145d4320b..d7f9e04b28 100644 --- a/xen/arch/x86/pv/dom0_build.c +++ b/xen/arch/x86/pv/dom0_build.c @@ -61,13 +61,14 @@ static __init void mark_pv_pt_pages_rdonly(struct domain *d, /* * Verify that - * - all pages have a valid L1...Ln page table type and + * - all pages have a valid L1...Ln page table type (including the PAE + * sub-flavor of L2) and * - no other bits are set, in particular the type refcount is still * zero. */ ASSERT((page->u.inuse.type_info & PGT_type_mask) >= PGT_l1_page_table); ASSERT((page->u.inuse.type_info & PGT_type_mask) <= PGT_root_page_table); - ASSERT(!(page->u.inuse.type_info & ~PGT_type_mask)); + ASSERT(!(page->u.inuse.type_info & ~(PGT_type_mask | PGT_pae_xen_l2))); /* Read-only mapping + PGC_allocated + page-table page. */ page->count_info = PGC_allocated | 3;