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

From: Toshi Kani
Date: Thu Dec 05 2013 - 11:01:05 EST


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


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/