diff options
Diffstat (limited to 'drivers/firmware/efi/reboot.c')
-rw-r--r-- | drivers/firmware/efi/reboot.c | 12 |
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 | ||
10 | void efi_reboot(enum reboot_mode reboot_mode, const char *__unused) | 10 | void 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 | ||