|
@@ -383,6 +383,34 @@ void enable_timer_nmi_watchdog(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static void __acpi_nmi_disable(void *__unused)
|
|
|
+{
|
|
|
+ apic_write_around(APIC_LVT0, APIC_DM_NMI | APIC_LVT_MASKED);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * Disable timer based NMIs on all CPUs:
|
|
|
+ */
|
|
|
+void acpi_nmi_disable(void)
|
|
|
+{
|
|
|
+ if (atomic_read(&nmi_active) && nmi_watchdog == NMI_IO_APIC)
|
|
|
+ on_each_cpu(__acpi_nmi_disable, NULL, 0, 1);
|
|
|
+}
|
|
|
+
|
|
|
+static void __acpi_nmi_enable(void *__unused)
|
|
|
+{
|
|
|
+ apic_write_around(APIC_LVT0, APIC_DM_NMI);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * Enable timer based NMIs on all CPUs:
|
|
|
+ */
|
|
|
+void acpi_nmi_enable(void)
|
|
|
+{
|
|
|
+ if (atomic_read(&nmi_active) && nmi_watchdog == NMI_IO_APIC)
|
|
|
+ on_each_cpu(__acpi_nmi_enable, NULL, 0, 1);
|
|
|
+}
|
|
|
+
|
|
|
#ifdef CONFIG_PM
|
|
|
|
|
|
static int nmi_pm_active; /* nmi_active before suspend */
|