[RFC PATCH] kexec, x86/boot: map systab region in identity mapping before accessing it

Kairui Song kasong at redhat.com
Fri Apr 19 04:50:17 PDT 2019

On Fri, Apr 19, 2019 at 7:34 PM Borislav Petkov <bp at alien8.de> wrote:
> On Fri, Apr 19, 2019 at 07:20:06PM +0800, Kairui Song wrote:
> > Thanks for the declaration Bao, I can verify on the machine I have,
> > the issue still exist without kaslr. Currently, we read rsdp in early
> > code and fill in boot_params unconditional, so it will read from the
> > systab anyway.
> Yes, and in the future, info required by the kexec'ed kernel - like the
> EFI systab address or even whether the kernel has been kexec'ed or comes
> from cold boot - should be passed in boot_params. So that we don't have
> to do all that ugly dancing in early code.
> > Yes, kexec only cover RAM in the ident map it prepared for second
> > kernel, but the systab could be in reserved region, so if it didn't
> > fall into the 1G padding by accident it will fail when reading from
> > it. Fix in early code could make sure 2nd kernel always work. Or
> > should we treat it specially in kexec mapping prepare code?
> Yes, we should. As I said, this is not early boot code's problem but the
> kexec setup code's problem.
> If the new kernel cannot get RSDP that early, then it should fail the
> same way it failed before. That early RDSP parsing was added for the
> movable regions thing working with KASLR.
> If it can't get a RDSP for whatever reason, then if KASLR selects
> a region overlapping with the movable regions, then it is the old
> behavior.
> Ok?

OK. And then fix the mapping issue in 1st kernel is the right way,
I'll skip the update for the early code mapping thing.

Best Regards,
Kairui Song

More information about the kexec mailing list