x86: enable NMI watchdog on nosmp
authorIngo Molnar <mingo@elte.hu>
Wed, 17 Oct 2007 16:04:34 +0000 (18:04 +0200)
committerThomas Gleixner <tglx@inhelltoy.tec.linutronix.de>
Wed, 17 Oct 2007 18:15:35 +0000 (20:15 +0200)
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>
arch/x86/kernel/smpboot_32.c

index edc9db69a1184ec6525c7a53d333289ece80281d..83e4f40f8dc93006a8431bc74d5bdc327c499d76 100644 (file)
@@ -1021,6 +1021,12 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
        if (!max_cpus) {
                smp_found_config = 0;
                printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n");
+
+               if (nmi_watchdog == NMI_LOCAL_APIC) {
+                       printk(KERN_INFO "activating minimal APIC for NMI watchdog use.\n");
+                       connect_bsp_APIC();
+                       setup_local_APIC();
+               }
                smpboot_clear_io_apic_irqs();
                phys_cpu_present_map = physid_mask_of_physid(0);
                cpu_set(0, per_cpu(cpu_sibling_map, 0));