Re: [tip:x86/boot] x86/boot: Early parse RSDP and save it in boot_params
From: Chao Fan
Date: Sun Feb 10 2019 - 20:08:22 EST
On Fri, Feb 08, 2019 at 08:10:24PM +0100, Borislav Petkov wrote:
>On Fri, Feb 08, 2019 at 11:02:48AM -0800, Guenter Roeck wrote:
>> 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' \
>> 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.
Sorry for delay, last several days were holiday, so I was away from
keyboard. I will take a look.
>Good mailing practices for 400: avoid top-posting and trim the reply.