Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull EFI updates from Ingo Molnar: - decode x86 CPER data (Yazen Ghannam) - ignore unrealistically large option ROMs (Hans de Goede) - initialize UEFI secure boot state during Xen dom0 boot (Daniel Kiper) - additional minor tweaks and fixes. * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: efi/capsule-loader: Don't output reset log when reset flags are not set efi/x86: Ignore unrealistically large option ROMs efi/x86: Fold __setup_efi_pci32() and __setup_efi_pci64() into one function efi: Align efi_pci_io_protocol typedefs to type naming convention efi/libstub/tpm: Make function efi_retrieve_tpm2_eventlog_1_2() static efi: Decode IA32/X64 Context Info structure efi: Decode IA32/X64 MS Check structure efi: Decode additional IA32/X64 Bus Check fields efi: Decode IA32/X64 Cache, TLB, and Bus Check structures efi: Decode UEFI-defined IA32/X64 Error Structure GUIDs efi: Decode IA32/X64 Processor Error Info Structure efi: Decode IA32/X64 Processor Error Section efi: Fix IA32/X64 Processor Error Record definition efi/cper: Remove the INDENT_SP silliness x86/xen/efi: Initialize UEFI secure boot state during dom0 boot
Tento commit je obsažen v:
@@ -115,6 +115,61 @@ static efi_system_table_t __init *xen_efi_probe(void)
|
||||
return &efi_systab_xen;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine whether we're in secure boot mode.
|
||||
*
|
||||
* Please keep the logic in sync with
|
||||
* drivers/firmware/efi/libstub/secureboot.c:efi_get_secureboot().
|
||||
*/
|
||||
static enum efi_secureboot_mode xen_efi_get_secureboot(void)
|
||||
{
|
||||
static efi_guid_t efi_variable_guid = EFI_GLOBAL_VARIABLE_GUID;
|
||||
static efi_guid_t shim_guid = EFI_SHIM_LOCK_GUID;
|
||||
efi_status_t status;
|
||||
u8 moksbstate, secboot, setupmode;
|
||||
unsigned long size;
|
||||
|
||||
size = sizeof(secboot);
|
||||
status = efi.get_variable(L"SecureBoot", &efi_variable_guid,
|
||||
NULL, &size, &secboot);
|
||||
|
||||
if (status == EFI_NOT_FOUND)
|
||||
return efi_secureboot_mode_disabled;
|
||||
|
||||
if (status != EFI_SUCCESS)
|
||||
goto out_efi_err;
|
||||
|
||||
size = sizeof(setupmode);
|
||||
status = efi.get_variable(L"SetupMode", &efi_variable_guid,
|
||||
NULL, &size, &setupmode);
|
||||
|
||||
if (status != EFI_SUCCESS)
|
||||
goto out_efi_err;
|
||||
|
||||
if (secboot == 0 || setupmode == 1)
|
||||
return efi_secureboot_mode_disabled;
|
||||
|
||||
/* See if a user has put the shim into insecure mode. */
|
||||
size = sizeof(moksbstate);
|
||||
status = efi.get_variable(L"MokSBStateRT", &shim_guid,
|
||||
NULL, &size, &moksbstate);
|
||||
|
||||
/* If it fails, we don't care why. Default to secure. */
|
||||
if (status != EFI_SUCCESS)
|
||||
goto secure_boot_enabled;
|
||||
|
||||
if (moksbstate == 1)
|
||||
return efi_secureboot_mode_disabled;
|
||||
|
||||
secure_boot_enabled:
|
||||
pr_info("UEFI Secure Boot is enabled.\n");
|
||||
return efi_secureboot_mode_enabled;
|
||||
|
||||
out_efi_err:
|
||||
pr_err("Could not determine UEFI Secure Boot status.\n");
|
||||
return efi_secureboot_mode_unknown;
|
||||
}
|
||||
|
||||
void __init xen_efi_init(void)
|
||||
{
|
||||
efi_system_table_t *efi_systab_xen;
|
||||
@@ -129,6 +184,8 @@ void __init xen_efi_init(void)
|
||||
boot_params.efi_info.efi_systab = (__u32)__pa(efi_systab_xen);
|
||||
boot_params.efi_info.efi_systab_hi = (__u32)(__pa(efi_systab_xen) >> 32);
|
||||
|
||||
boot_params.secure_boot = xen_efi_get_secureboot();
|
||||
|
||||
set_bit(EFI_BOOT, &efi.flags);
|
||||
set_bit(EFI_PARAVIRT, &efi.flags);
|
||||
set_bit(EFI_64BIT, &efi.flags);
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele