Re: [PATCH v4 07/12] efi: passing kexec necessary efi data via setup_data

Toshi Kani
2013-12-05T15:56:02Z

On Thu, 2013-12-05 at 12:51 +0100, Borislav Petkov wrote:
> On Thu, Dec 05, 2013 at 09:56:15AM +0800, Dave Young wrote:
> > > The z420 firmware is based on some UEFI core that may be used by other
> > > vendors as well. Since this handling is totally harmless (just
> > > redundant), I'd suggest not to have a platform check on this handling.
> >
> > I have same worry as well, so I agree with you.
>
> Btw, why does kexec need the ->smbios table at all? I see it being
> passed in efi_setup_data.

Hi Boris,

The smbios in efi_setup_data is necessary for kexec to pass the physical
address of the SMBIOS table from the 1st kernel to the 2nd kernel.

The kernel boot sequence proceeds in the following order. Step 2
requires efi.smbios to be the physical address. However, Dave found
that EFI system table has a virtual address of SMBIOS in step 1. Hence,
he sets it back to the physical address with the smbios in
efi_setup_data. (When it is still the physical address, it simply sets
the same value.)

1. efi_init() - Set efi.smbios from EFI system table
2. dmi_scan_machine() - Temporary map efi.smbios to access SMBIOS table
3. efi_enter_virtual_mode() - Map EFI ranges

Thanks,
-Toshi