diff options
author | Andi Kleen <ak@suse.de> | 2005-11-05 11:25:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-14 22:55:16 -0500 |
commit | 3506229ff9968e5dbc862a50285fbea0e8821b58 (patch) | |
tree | 76306c140f9a4bec3b3f429467a7dee32c810859 /arch/x86_64/kernel/smp.c | |
parent | a88cde13bae3fffd6ecc812bdd02c91eafb6073e (diff) |
[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: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/smp.c')
-rw-r--r-- | arch/x86_64/kernel/smp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/smp.c b/arch/x86_64/kernel/smp.c index 493a0d1f1279..cfc3d9dccbd9 100644 --- a/arch/x86_64/kernel/smp.c +++ b/arch/x86_64/kernel/smp.c | |||
@@ -450,13 +450,14 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic, | |||
450 | 450 | ||
451 | void smp_stop_cpu(void) | 451 | void smp_stop_cpu(void) |
452 | { | 452 | { |
453 | unsigned long flags; | ||
453 | /* | 454 | /* |
454 | * Remove this CPU: | 455 | * Remove this CPU: |
455 | */ | 456 | */ |
456 | cpu_clear(smp_processor_id(), cpu_online_map); | 457 | cpu_clear(smp_processor_id(), cpu_online_map); |
457 | local_irq_disable(); | 458 | local_irq_save(flags); |
458 | disable_local_APIC(); | 459 | disable_local_APIC(); |
459 | local_irq_enable(); | 460 | local_irq_restore(flags); |
460 | } | 461 | } |
461 | 462 | ||
462 | static void smp_really_stop_cpu(void *dummy) | 463 | static void smp_really_stop_cpu(void *dummy) |