Hi Julien, > On 28 Feb 2022, at 10:06, Julien Grall <[email protected]> wrote: > > From: Julien Grall <[email protected]> > > The boot code expects the regions XEN_VIRT_START, FIXMAP_ADDR(0), > BOOT_FDT_VIRT_START to use the same 0th (arm64 only) and 1st slot. > > Add some BUILD_BUG_ON() to confirm that. This is helpful if one wants > to re-order the memory layout.
Very good idea :-) > > Signed-off-by: Julien Grall <[email protected]> Reviewed-by: Bertrand Marquis <[email protected]> Just a small NIT after if you want to do it on commit... > --- > xen/arch/arm/mm.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c > index 8a17222109c6..40423a70f0ae 100644 > --- a/xen/arch/arm/mm.c > +++ b/xen/arch/arm/mm.c > @@ -211,6 +211,22 @@ static void __init __maybe_unused build_assertions(void) > #ifdef CONFIG_DOMAIN_PAGE > BUILD_BUG_ON(DOMHEAP_VIRT_START & ~FIRST_MASK); > #endif > + /* > + * The boot code expects the regions XEN_VIRT_START, FIXMAP_ADDR(0), > + * BOOT_FDT_VIRT_START to use the same 0th (arm64 only) and 1st > + * slot. NIT: I would just add at the end of the sentence “in the page tables.” Cheers Bertrand > + */ > +#define CHECK_SAME_SLOT(level, virt1, virt2) \ > + BUILD_BUG_ON(level##_table_offset(virt1) != level##_table_offset(virt2)) > + > +#ifdef CONFIG_ARM_64 > + CHECK_SAME_SLOT(zeroeth, XEN_VIRT_START, FIXMAP_ADDR(0)); > + CHECK_SAME_SLOT(zeroeth, XEN_VIRT_START, BOOT_FDT_VIRT_START); > +#endif > + CHECK_SAME_SLOT(first, XEN_VIRT_START, FIXMAP_ADDR(0)); > + CHECK_SAME_SLOT(first, XEN_VIRT_START, BOOT_FDT_VIRT_START); > + > +#undef CHECK_SAME_SLOT > } > > void dump_pt_walk(paddr_t ttbr, paddr_t addr, > -- > 2.32.0 >
