Re: [PATCH] x86/boot: Use EFI setup data if provided

From: Baoquan He
Date: Mon Mar 25 2019 - 05:03:55 EST


On 03/25/19 at 09:43am, Thomas Gleixner wrote:
> On Mon, 25 Mar 2019, Baoquan He wrote:
>
> > On 03/25/19 at 08:53am, Borislav Petkov wrote:
> > > On Mon, Mar 25, 2019 at 03:27:10PM +0800, Baoquan He wrote:
> > > > Kexec kernel also need to get rsdp to get SRAT tables so that KASLR can
> > > > avoid those hotpluggable regions in boot compression stage.
> > > >
> > > > The kexec_file_load has filled in acpi_rsdp_addr of kexec kernel in
> > > > below code. It will return direclty in get_rsdp_addr() since
> > > > acpi_rsdp_addr is got from boot_params->acpi_rsdp_addr.
> > > >
> > > > arch/x86/kernel/kexec-bzimage64.c <<setup_boot_parameters>>
> > > > params->acpi_rsdp_addr = boot_params.acpi_rsdp_addr;
> > > >
> > > > The other interface, kexec_load, its boot_params filling is done in user
> > > > space kexec_tools. And we haven't made the acpi_rsdp_addr filling yet.
> > > > And the old kexec_tools utility can also cause the new kexec kernel to
> > > > search efi rspd pointer even thought it's fixed.
> > >
> > > Yes, kexec is a pile of ugly and fragile hackery.
> >
> > Well, yes, we have to admit that, since kexec is based on hacking.
>
> Well, then the right thing to do is to think about it proper and replace
> the hackery by something well thought out instead of adding duct tape to it
> every other day.

I could make mistakes on expressing. I meant the mechanism of kexec is
based on hacking into kernel booting stuff. So sometime we call kexec a
bootloader, at least a bootloader variant. That means we may need to adapt
code when any change is made in kernel boot side.

E.g for this acpi_rsdp_addr adding, it happened in boot compressing
stage, to get rsdp to fix the conflict between KASLR and HOTPLUG.
Accordingly, kexec code need be adpated too.

So, when maintain kexec/kdump, we have to track and test any change
which could happen in kernel boot.

Thanks
Baoquan