diff options
-rw-r--r-- | arch/x86/kernel/reboot.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 364edeecc235..17a41e055565 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
@@ -519,7 +519,7 @@ void machine_crash_shutdown(struct pt_regs *regs) | |||
519 | #endif | 519 | #endif |
520 | 520 | ||
521 | 521 | ||
522 | #if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC) | 522 | #if defined(CONFIG_SMP) |
523 | 523 | ||
524 | /* This keeps a track of which one is crashing cpu. */ | 524 | /* This keeps a track of which one is crashing cpu. */ |
525 | static int crashing_cpu; | 525 | static int crashing_cpu; |
@@ -568,6 +568,12 @@ static struct notifier_block crash_nmi_nb = { | |||
568 | .notifier_call = crash_nmi_callback, | 568 | .notifier_call = crash_nmi_callback, |
569 | }; | 569 | }; |
570 | 570 | ||
571 | /* Halt all other CPUs, calling the specified function on each of them | ||
572 | * | ||
573 | * This function can be used to halt all other CPUs on crash | ||
574 | * or emergency reboot time. The function passed as parameter | ||
575 | * will be called inside a NMI handler on all CPUs. | ||
576 | */ | ||
571 | void nmi_shootdown_cpus(nmi_shootdown_cb callback) | 577 | void nmi_shootdown_cpus(nmi_shootdown_cb callback) |
572 | { | 578 | { |
573 | unsigned long msecs; | 579 | unsigned long msecs; |
@@ -596,4 +602,9 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback) | |||
596 | 602 | ||
597 | /* Leave the nmi callback set */ | 603 | /* Leave the nmi callback set */ |
598 | } | 604 | } |
605 | #else /* !CONFIG_SMP */ | ||
606 | void nmi_shootdown_cpus(nmi_shootdown_cb callback) | ||
607 | { | ||
608 | /* No other CPUs to shoot down */ | ||
609 | } | ||
599 | #endif | 610 | #endif |