Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull EFI changes from Ingo Molnar: "Main changes in this cycle are: - arm64 efi stub fixes, preservation of FP/SIMD registers across firmware calls, and conversion of the EFI stub code into a static library - Ard Biesheuvel - Xen EFI support - Daniel Kiper - Support for autoloading the efivars driver - Lee, Chun-Yi - Use the PE/COFF headers in the x86 EFI boot stub to request that the stub be loaded with CONFIG_PHYSICAL_ALIGN alignment - Michael Brown - Consolidate all the x86 EFI quirks into one file - Saurabh Tangri - Additional error logging in x86 EFI boot stub - Ulf Winkelvos - Support loading initrd above 4G in EFI boot stub - Yinghai Lu - EFI reboot patches for ACPI hardware reduced platforms" * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (31 commits) efi/arm64: Handle missing virtual mapping for UEFI System Table arch/x86/xen: Silence compiler warnings xen: Silence compiler warnings x86/efi: Request desired alignment via the PE/COFF headers x86/efi: Add better error logging to EFI boot stub efi: Autoload efivars efi: Update stale locking comment for struct efivars arch/x86: Remove efi_set_rtc_mmss() arch/x86: Replace plain strings with constants xen: Put EFI machinery in place xen: Define EFI related stuff arch/x86: Remove redundant set_bit(EFI_MEMMAP) call arch/x86: Remove redundant set_bit(EFI_SYSTEM_TABLES) call efi: Introduce EFI_PARAVIRT flag arch/x86: Do not access EFI memory map if it is not available efi: Use early_mem*() instead of early_io*() arch/ia64: Define early_memunmap() x86/reboot: Add EFI reboot quirk for ACPI Hardware Reduced flag efi/reboot: Allow powering off machines using EFI efi/reboot: Add generic wrapper around EfiResetSystem() ...
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include <linux/mc146818rtc.h>
|
||||
#include <asm/realmode.h>
|
||||
#include <asm/x86_init.h>
|
||||
#include <asm/efi.h>
|
||||
|
||||
/*
|
||||
* Power off function, if any
|
||||
@@ -401,12 +402,25 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
|
||||
|
||||
static int __init reboot_init(void)
|
||||
{
|
||||
int rv;
|
||||
|
||||
/*
|
||||
* Only do the DMI check if reboot_type hasn't been overridden
|
||||
* on the command line
|
||||
*/
|
||||
if (reboot_default)
|
||||
dmi_check_system(reboot_dmi_table);
|
||||
if (!reboot_default)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The DMI quirks table takes precedence. If no quirks entry
|
||||
* matches and the ACPI Hardware Reduced bit is set, force EFI
|
||||
* reboot.
|
||||
*/
|
||||
rv = dmi_check_system(reboot_dmi_table);
|
||||
|
||||
if (!rv && efi_reboot_required())
|
||||
reboot_type = BOOT_EFI;
|
||||
|
||||
return 0;
|
||||
}
|
||||
core_initcall(reboot_init);
|
||||
@@ -528,11 +542,7 @@ static void native_machine_emergency_restart(void)
|
||||
break;
|
||||
|
||||
case BOOT_EFI:
|
||||
if (efi_enabled(EFI_RUNTIME_SERVICES))
|
||||
efi.reset_system(reboot_mode == REBOOT_WARM ?
|
||||
EFI_RESET_WARM :
|
||||
EFI_RESET_COLD,
|
||||
EFI_SUCCESS, 0, NULL);
|
||||
efi_reboot(reboot_mode, NULL);
|
||||
reboot_type = BOOT_BIOS;
|
||||
break;
|
||||
|
||||
|
@@ -924,10 +924,10 @@ void __init setup_arch(char **cmdline_p)
|
||||
#endif
|
||||
#ifdef CONFIG_EFI
|
||||
if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature,
|
||||
"EL32", 4)) {
|
||||
EFI32_LOADER_SIGNATURE, 4)) {
|
||||
set_bit(EFI_BOOT, &efi.flags);
|
||||
} else if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature,
|
||||
"EL64", 4)) {
|
||||
EFI64_LOADER_SIGNATURE, 4)) {
|
||||
set_bit(EFI_BOOT, &efi.flags);
|
||||
set_bit(EFI_64BIT, &efi.flags);
|
||||
}
|
||||
|
Reference in New Issue
Block a user