瀏覽代碼

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>
Ingo Molnar 17 年之前
父節點
當前提交
3fb450a327
共有 1 個文件被更改,包括 6 次插入0 次删除
  1. 6 0
      arch/x86/kernel/smpboot_32.c

+ 6 - 0
arch/x86/kernel/smpboot_32.c

@@ -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));