Re: [PATCH v2] x86/boot: Use efi_setup_data for searching RSDP on kexec-ed kernel

From: Dave Young
Date: Wed Apr 03 2019 - 01:53:58 EST


On 04/03/19 at 01:35pm, Chao Fan wrote:
> On Tue, Apr 02, 2019 at 08:03:19PM +0800, Dave Young wrote:
> >On 04/01/19 at 12:08am, Junichi Nomura wrote:
> >> Commit 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in
> >> boot_params") broke kexec boot on EFI systems. efi_get_rsdp_addr()
> >> in the early parsing code tries to search RSDP from EFI table but
> >> that will crash because the table address is virtual when the kernel
> >> was booted by kexec.
> >>
> >> In the case of kexec, physical address of EFI tables is provided
> >> via efi_setup_data in boot_params, which is set up by kexec(1).
> >>
> >> Factor out the table parsing code and use different pointers depending
> >> on whether the kernel is booted by kexec or not.
> >>
> >> Fixes: 3a63f70bf4c3a ("x86/boot: Early parse RSDP and save it in boot_params")
> >> Signed-off-by: Jun'ichi Nomura <j-nomura@xxxxxxxxxxxxx>
> >> Acked-by: Baoquan He <bhe@xxxxxxxxxx>
> >> Cc: Chao Fan <fanc.fnst@xxxxxxxxxxxxxx>
> >> Cc: Borislav Petkov <bp@xxxxxxx>
> >> Cc: Dave Young <dyoung@xxxxxxxxxx>
> [...]
> >
> >I failed to kexec reboot on my laptop, kernel panics too quick, I'm not sure this is
> >caused by your patch though.
> >
> >Actually there are something probably i915 changes break kexec, the
> >above test is with "nomodeset" which should work.
> >
> >Let me do more testing and update here tomorrow.
> >
>
> Hi Dave,
>
> Last day I was testing the normal kexec, today I have tested the kdump
> issue. Since the kdump has set "nokaslr" to cmdline, so I drop from
> KDUMP_COMMANDLINE_APPEND
> And it booted OK, so the PATCH works in both normal kexec and kdump.
>

Actually I got some different kexec test results.

Yesterday, with my installed kernel (based on git head several weeks
ago), kexec kernel panics.

Then I tried latest mainline with git pull, everything works, (with or
without the patch, and can not reproduce the bug this patch is fixing)

Today, test again, kexec reboot hangs (with or without your patch), but
kdump works always (with or without the patch)

It is weird to me. Probably I need find out why I can not reproduce the
bug this patch is addressing first.

earlyprintk seems not working for me anymore, it is not easy to debug on
laptop now.

But the patch itself is clear, I think it should be good. There might be
other things broken.

Thanks
Dave