提交 3506229f 编写于 作者: A Andi Kleen 提交者: Linus Torvalds

[PATCH] x86_64: Don't enable interrupt unconditionally in reboot path

When they were disabled before (e.g. after a panic) it's better
to keep them off, otherwise followon panics can happen from timer
interrupt handlers etc.

Drawback is that pageup in the console won't work anymore though.
Signed-off-by: NAndi Kleen <ak@suse.de>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 a88cde13
......@@ -77,6 +77,7 @@ static inline void kb_wait(void)
void machine_shutdown(void)
{
unsigned long flags;
/* Stop the cpus and apics */
#ifdef CONFIG_SMP
int reboot_cpu_id;
......@@ -98,7 +99,7 @@ void machine_shutdown(void)
smp_send_stop();
#endif
local_irq_disable();
local_irq_save(flags);
#ifndef CONFIG_SMP
disable_local_APIC();
......@@ -106,7 +107,7 @@ void machine_shutdown(void)
disable_IO_APIC();
local_irq_enable();
local_irq_restore(flags);
}
void machine_emergency_restart(void)
......
......@@ -450,13 +450,14 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
void smp_stop_cpu(void)
{
unsigned long flags;
/*
* Remove this CPU:
*/
cpu_clear(smp_processor_id(), cpu_online_map);
local_irq_disable();
local_irq_save(flags);
disable_local_APIC();
local_irq_enable();
local_irq_restore(flags);
}
static void smp_really_stop_cpu(void *dummy)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册