On Wed, May 03, 2023 at 10:08:20AM +0200, Jan Beulich wrote: > On 02.05.2023 16:59, Roger Pau Monne wrote: > > Ensure that the base address is 2M aligned, or else the page table > > entries created would be corrupt as reserved bits on the PDE end up > > set. > > > > We have encountered a broken firmware where grub2 would end up loading > > Xen at a non 2M aligned region when using the multiboot2 protocol, and > > that caused a very difficult to debug triple fault. > > > > If the alignment is not as required by the page tables print an error > > message and stop the boot. Also add a build time check that the > > calculation of symbol offsets don't break alignment of passed > > addresses. > > > > The check could be performed earlier, but so far the alignment is > > required by the page tables, and hence feels more natural that the > > check lives near to the piece of code that requires it. > > > > Note that when booted as an EFI application from the PE entry point > > the alignment check is already performed by > > efi_arch_load_addr_check(), and hence there's no need to add another > > check at the point where page tables get built in > > efi_arch_memory_setup(). > > > > Signed-off-by: Roger Pau Monné <roger....@citrix.com> > > Reviewed-by: Jan Beulich <jbeul...@suse.com> > > Would you mind if, while committing, ... > > > @@ -146,6 +148,9 @@ bad_cpu: > > not_multiboot: > > add $sym_offs(.Lbad_ldr_msg),%esi # Error message > > jmp .Lget_vtb > > +not_aligned: > > ... a .L prefix was added to this label, bringing it out of sync with the > earlier one, but in line with e.g. ... > > > + add $sym_offs(.Lbag_alg_msg),%esi # Error message > > + jmp .Lget_vtb > > .Lmb2_no_st: > > ... this one? I don't think the label is particularly useful to have in > the symbol table (nor are not_multiboot and likely a few others).
Hm, right, yes, I don't think having those on the symbol table is helpful, please adjust. Thanks, Roger.