diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2005-07-26 13:41:26 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-26 17:35:42 -0400 |
commit | 4a1421f81b64e49ce932125e7222a2d7b7f87f13 (patch) | |
tree | 8f960fc27c718039bb9b93b237233d304eec8be7 | |
parent | 59586e5a262a29361c45c929ea3253d4aec830b0 (diff) |
[PATCH] i386: Implement machine_emergency_reboot
set_cpus_allowed is not safe in interrupt context
and disabling apics is complicated code so don't
call machine_shutdown on i386 from emergency_restart().
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/i386/kernel/reboot.c | 10 | ||||
-rw-r--r-- | include/asm-i386/emergency-restart.h | 2 |
2 files changed, 8 insertions, 4 deletions
diff --git a/arch/i386/kernel/reboot.c b/arch/i386/kernel/reboot.c index 1b24bc7271af..d473350aa055 100644 --- a/arch/i386/kernel/reboot.c +++ b/arch/i386/kernel/reboot.c | |||
@@ -311,10 +311,8 @@ void machine_shutdown(void) | |||
311 | #endif | 311 | #endif |
312 | } | 312 | } |
313 | 313 | ||
314 | void machine_restart(char * __unused) | 314 | void machine_emergency_restart(void) |
315 | { | 315 | { |
316 | machine_shutdown(); | ||
317 | |||
318 | if (!reboot_thru_bios) { | 316 | if (!reboot_thru_bios) { |
319 | if (efi_enabled) { | 317 | if (efi_enabled) { |
320 | efi.reset_system(EFI_RESET_COLD, EFI_SUCCESS, 0, NULL); | 318 | efi.reset_system(EFI_RESET_COLD, EFI_SUCCESS, 0, NULL); |
@@ -337,6 +335,12 @@ void machine_restart(char * __unused) | |||
337 | machine_real_restart(jump_to_bios, sizeof(jump_to_bios)); | 335 | machine_real_restart(jump_to_bios, sizeof(jump_to_bios)); |
338 | } | 336 | } |
339 | 337 | ||
338 | void machine_restart(char * __unused) | ||
339 | { | ||
340 | machine_shutdown(); | ||
341 | machine_emergency_restart(); | ||
342 | } | ||
343 | |||
340 | void machine_halt(void) | 344 | void machine_halt(void) |
341 | { | 345 | { |
342 | } | 346 | } |
diff --git a/include/asm-i386/emergency-restart.h b/include/asm-i386/emergency-restart.h index 108d8c48e42e..680c39563345 100644 --- a/include/asm-i386/emergency-restart.h +++ b/include/asm-i386/emergency-restart.h | |||
@@ -1,6 +1,6 @@ | |||
1 | #ifndef _ASM_EMERGENCY_RESTART_H | 1 | #ifndef _ASM_EMERGENCY_RESTART_H |
2 | #define _ASM_EMERGENCY_RESTART_H | 2 | #define _ASM_EMERGENCY_RESTART_H |
3 | 3 | ||
4 | #include <asm-generic/emergency-restart.h> | 4 | extern void machine_emergency_restart(void); |
5 | 5 | ||
6 | #endif /* _ASM_EMERGENCY_RESTART_H */ | 6 | #endif /* _ASM_EMERGENCY_RESTART_H */ |