aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firmware/efi/reboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firmware/efi/reboot.c')
-rw-r--r--drivers/firmware/efi/reboot.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/firmware/efi/reboot.c b/drivers/firmware/efi/reboot.c
index 9c59d1c795d1..62ead9b9d871 100644
--- a/drivers/firmware/efi/reboot.c
+++ b/drivers/firmware/efi/reboot.c
@@ -9,7 +9,8 @@ int efi_reboot_quirk_mode = -1;
9 9
10void efi_reboot(enum reboot_mode reboot_mode, const char *__unused) 10void efi_reboot(enum reboot_mode reboot_mode, const char *__unused)
11{ 11{
12 int efi_mode; 12 const char *str[] = { "cold", "warm", "shutdown", "platform" };
13 int efi_mode, cap_reset_mode;
13 14
14 if (!efi_enabled(EFI_RUNTIME_SERVICES)) 15 if (!efi_enabled(EFI_RUNTIME_SERVICES))
15 return; 16 return;
@@ -30,6 +31,15 @@ void efi_reboot(enum reboot_mode reboot_mode, const char *__unused)
30 if (efi_reboot_quirk_mode != -1) 31 if (efi_reboot_quirk_mode != -1)
31 efi_mode = efi_reboot_quirk_mode; 32 efi_mode = efi_reboot_quirk_mode;
32 33
34 if (efi_capsule_pending(&cap_reset_mode)) {
35 if (efi_mode != cap_reset_mode)
36 printk(KERN_CRIT "efi: %s reset requested but pending "
37 "capsule update requires %s reset... Performing "
38 "%s reset.\n", str[efi_mode], str[cap_reset_mode],
39 str[cap_reset_mode]);
40 efi_mode = cap_reset_mode;
41 }
42
33 efi.reset_system(efi_mode, EFI_SUCCESS, 0, NULL); 43 efi.reset_system(efi_mode, EFI_SUCCESS, 0, NULL);
34} 44}
35 45