Re: [PATCH v2 00/15] x86/boot: Rework PE header generation

From: Ingo Molnar
Date: Sat Sep 16 2023 - 05:14:32 EST



* Ard Biesheuvel <ardb@xxxxxxxxxx> wrote:

> > > So, the first 8 patches broke the x86-64-defconfig-ish Qemu bzImage bootup,
> > > due to the 8th patch:
> > >
> > > 988b52b207a9fe74c3699bda8c2256714926b94b is the first bad commit
> > > commit 988b52b207a9fe74c3699bda8c2256714926b94b
> > > Author: Ard Biesheuvel <ardb@xxxxxxxxxx>
> > > Date: Tue Sep 12 09:01:01 2023 +0000
> > >
> > > x86/boot: Define setup size in linker script
> > >
> > > I've removed it for now - but this side effect was not expected.
> > >
> >
> > No, definitely not expected. I tested various combinations of i386 /
> > x86_64 built with GCC / Clang doing EFI or BIOS boot.
> >
> > I'll rebase the remaining stuff onto -tip and see if I can reproduce this.
>
> This is actually quite bizarre. x86_64_defconfig has
> CONFIG_EFI_MIXED=y and i tested that this change produces the exact
> same bzImage binary in that case.
>
> Could you send me the .config and the QEMU command line perhaps?

So the patch below is the delta between v2 and v3 - that is expected
to fix the bzImage boot crash, right?

Thanks,

Ingo

--- tip.orig/arch/x86/boot/setup.ld
+++ tip/arch/x86/boot/setup.ld
@@ -41,7 +41,7 @@ SECTIONS
LONG(0x5a5aaa55)

/* Reserve some extra space for the reloc and compat sections */
- setup_size = ABSOLUTE(ALIGN(. + 64, 512));
+ setup_size = ALIGN(ABSOLUTE(.) + 64, 512);
setup_sects = ABSOLUTE(setup_size / 512);
}