x86, NMI: Add knob to disable using NMI IPIs to stop cpus
Some machines may exhibit problems using the NMI to stop other cpus. This knob just allows one to revert back to the original behaviour to help diagnose the problem. V2: make function static Signed-off-by: Don Zickus <dzickus@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Robert Richter <robert.richter@amd.com> Cc: seiji.aguchi@hds.com Cc: vgoyal@redhat.com Cc: mjg@redhat.com Cc: tony.luck@intel.com Cc: gong.chen@intel.com Cc: satoru.moriya@hds.com Cc: avi@redhat.com Cc: Andi Kleen <andi@firstfloor.org> Link: http://lkml.kernel.org/r/1318533267-18880-4-git-send-email-dzickus@redhat.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
99e8b9ca90
Коммит
bda6263398
|
@ -1796,6 +1796,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||
nomfgpt [X86-32] Disable Multi-Function General Purpose
|
||||
Timer usage (for AMD Geode machines).
|
||||
|
||||
nonmi_ipi [X86] Disable using NMI IPIs during panic/reboot to
|
||||
shutdown the other cpus. Instead use the REBOOT_VECTOR
|
||||
irq.
|
||||
|
||||
nopat [X86] Disable PAT (page attribute table extension of
|
||||
pagetables) support.
|
||||
|
||||
|
|
|
@ -249,6 +249,11 @@ static void native_irq_stop_other_cpus(int wait)
|
|||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static void native_smp_disable_nmi_ipi(void)
|
||||
{
|
||||
smp_ops.stop_other_cpus = native_irq_stop_other_cpus;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reschedule call back.
|
||||
*/
|
||||
|
@ -280,6 +285,14 @@ void smp_call_function_single_interrupt(struct pt_regs *regs)
|
|||
irq_exit();
|
||||
}
|
||||
|
||||
static int __init nonmi_ipi_setup(char *str)
|
||||
{
|
||||
native_smp_disable_nmi_ipi();
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("nonmi_ipi", nonmi_ipi_setup);
|
||||
|
||||
struct smp_ops smp_ops = {
|
||||
.smp_prepare_boot_cpu = native_smp_prepare_boot_cpu,
|
||||
.smp_prepare_cpus = native_smp_prepare_cpus,
|
||||
|
|
Загрузка…
Ссылка в новой задаче