Messages in this thread | | | Date | Mon, 25 Mar 2019 17:03:49 +0800 | From | Baoquan He <> | Subject | Re: [PATCH] x86/boot: Use EFI setup data if provided |
| |
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
| |