Re: [tip:x86/boot] x86/boot: Early parse RSDP and save it in boot_params

From: Borislav Petkov
Date: Fri Feb 08 2019 - 14:10:38 EST


On Fri, Feb 08, 2019 at 11:02:48AM -0800, Guenter Roeck wrote:
> Hi,
>
> On Fri, Feb 01, 2019 at 03:01:11AM -0800, tip-bot for Chao Fan wrote:
> > Commit-ID: 3a63f70bf4c3a17f5d9c9bf3bc3288a23bdfefce
> > Gitweb: https://git.kernel.org/tip/3a63f70bf4c3a17f5d9c9bf3bc3288a23bdfefce
> > Author: Chao Fan <fanc.fnst@xxxxxxxxxxxxxx>
> > AuthorDate: Wed, 23 Jan 2019 19:08:48 +0800
> > Committer: Borislav Petkov <bp@xxxxxxx>
> > CommitDate: Fri, 1 Feb 2019 11:52:55 +0100
> >
> > x86/boot: Early parse RSDP and save it in boot_params
> >
> > The RSDP is needed by KASLR so parse it early and save it in
> > boot_params.acpi_rsdp_addr, before KASLR setup runs.
> >
> > RSDP is needed by other kernel facilities so have the parsing code
> > built-in instead of a long "depends on" line in Kconfig.
> >
> > [ bp:
> > - Trim commit message and comments
> > - Add CONFIG_ACPI dependency in the Makefile
> > - Move ->acpi_rsdp_addr assignment with the rest of boot_params massaging in extract_kernel().
> > ]
> >
>
> This patch causes x86_64 boots with efi32 bios to crash early and hard
> (before any console output is seen).
>
> Sample qemu command line:
>
> qemu-system-x86_64 -kernel arch/x86/boot/bzImage -M q35 -cpu SandyBridge \
> -no-reboot -snapshot -smp 4 \
> -bios OVMF-pure-efi-32.fd \
> -m 1G \
> -usb -device usb-storage,drive=d0 \
> -drive file=rootfs.squashfs,if=none,id=d0,format=raw \
> --append 'earlycon=uart8250,io,0x3f8,9600n8 root=/dev/sda rootwait panic=-1 console=ttyS0' \
> -nographic
>
> This is with qemu 3.1, though details other than "-bios OVMF-pure-efi-32.fd"
> don't really matter.
>
> Files used above are available from https://github.com/groeck/linux-build-test/.
>
> The patch can not be reverted alone, but
>
> Revert "x86/boot/KASLR: Limit KASLR to extract the kernel in immovable memory only"
> Revert "x86/boot: Parse SRAT table and count immovable memory regions"
> Revert "x86/boot: Early parse RSDP and save it in boot_params"
>
> fixes the problem.

Does it per chance at least continue booting if you return 0 and early
from efi_get_rsdp_addr() ?

Chao, pls take a look.

Thx.

--
Regards/Gruss,
Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.