diff options
author | Ingo Molnar <mingo@elte.hu> | 2007-10-17 12:04:34 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@inhelltoy.tec.linutronix.de> | 2007-10-17 14:15:35 -0400 |
commit | 3fb450a327fc098efe6c9f000d470abac354cfcc (patch) | |
tree | 5e8edbbc4b743a797253340bd96000049dbd12ff /arch | |
parent | 2f62c94176af875f22ecd01887a550d5d48092fc (diff) |
x86: enable NMI watchdog on nosmp
if nosmp has been passed as a boot option, but nmi_watchdog=2 has also
been enabled then keep minimal local APIC functionality around to make
the watchdog work.
this allowed me to debug a hard hang that would only occur with a nosmp
bootup.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index edc9db69a118..83e4f40f8dc9 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c | |||
@@ -1021,6 +1021,12 @@ static void __init smp_boot_cpus(unsigned int max_cpus) | |||
1021 | if (!max_cpus) { | 1021 | if (!max_cpus) { |
1022 | smp_found_config = 0; | 1022 | smp_found_config = 0; |
1023 | printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); | 1023 | printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); |
1024 | |||
1025 | if (nmi_watchdog == NMI_LOCAL_APIC) { | ||
1026 | printk(KERN_INFO "activating minimal APIC for NMI watchdog use.\n"); | ||
1027 | connect_bsp_APIC(); | ||
1028 | setup_local_APIC(); | ||
1029 | } | ||
1024 | smpboot_clear_io_apic_irqs(); | 1030 | smpboot_clear_io_apic_irqs(); |
1025 | phys_cpu_present_map = physid_mask_of_physid(0); | 1031 | phys_cpu_present_map = physid_mask_of_physid(0); |
1026 | cpu_set(0, per_cpu(cpu_sibling_map, 0)); | 1032 | cpu_set(0, per_cpu(cpu_sibling_map, 0)); |