[PATCH] x86_64: Implemenent machine_emergency_restart

It is not safe to call set_cpus_allowed() in interrupt
context and disabling the apics is complicated code.
So unconditionally skip machine_shutdown in machine_emergency_reboot
on x86_64.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Eric W. Biederman 2005-07-26 11:45:31 -06:00 committed by Linus Torvalds
parent 7c9a90073c
commit 62b3a04d75
2 changed files with 12 additions and 8 deletions

View File

@ -109,16 +109,10 @@ void machine_shutdown(void)
local_irq_enable(); local_irq_enable();
} }
void machine_restart(char * __unused) void machine_emergency_restart(void)
{ {
int i; int i;
printk("machine restart\n");
if (!reboot_force) {
machine_shutdown();
}
/* Tell the BIOS if we want cold or warm reboot */ /* Tell the BIOS if we want cold or warm reboot */
*((unsigned short *)__va(0x472)) = reboot_mode; *((unsigned short *)__va(0x472)) = reboot_mode;
@ -143,6 +137,16 @@ void machine_restart(char * __unused)
} }
} }
void machine_restart(char * __unused)
{
printk("machine restart\n");
if (!reboot_force) {
machine_shutdown();
}
machine_emergency_restart();
}
void machine_halt(void) void machine_halt(void)
{ {
} }

View File

@ -1,6 +1,6 @@
#ifndef _ASM_EMERGENCY_RESTART_H #ifndef _ASM_EMERGENCY_RESTART_H
#define _ASM_EMERGENCY_RESTART_H #define _ASM_EMERGENCY_RESTART_H
#include <asm-generic/emergency-restart.h> extern void machine_emergency_restart(void);
#endif /* _ASM_EMERGENCY_RESTART_H */ #endif /* _ASM_EMERGENCY_RESTART_H */