diff options
| -rw-r--r-- | arch/x86/kernel/nmi.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c index 2c005fac6171..13316cf57cdb 100644 --- a/arch/x86/kernel/nmi.c +++ b/arch/x86/kernel/nmi.c | |||
| @@ -131,6 +131,11 @@ static void report_broken_nmi(int cpu, int *prev_nmi_count) | |||
| 131 | atomic_dec(&nmi_active); | 131 | atomic_dec(&nmi_active); |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | static void __acpi_nmi_disable(void *__unused) | ||
| 135 | { | ||
| 136 | apic_write(APIC_LVT0, APIC_DM_NMI | APIC_LVT_MASKED); | ||
| 137 | } | ||
| 138 | |||
| 134 | int __init check_nmi_watchdog(void) | 139 | int __init check_nmi_watchdog(void) |
| 135 | { | 140 | { |
| 136 | unsigned int *prev_nmi_count; | 141 | unsigned int *prev_nmi_count; |
| @@ -179,8 +184,12 @@ int __init check_nmi_watchdog(void) | |||
| 179 | kfree(prev_nmi_count); | 184 | kfree(prev_nmi_count); |
| 180 | return 0; | 185 | return 0; |
| 181 | error: | 186 | error: |
| 182 | if (nmi_watchdog == NMI_IO_APIC && !timer_through_8259) | 187 | if (nmi_watchdog == NMI_IO_APIC) { |
| 183 | disable_8259A_irq(0); | 188 | if (!timer_through_8259) |
| 189 | disable_8259A_irq(0); | ||
| 190 | on_each_cpu(__acpi_nmi_disable, NULL, 1); | ||
| 191 | } | ||
| 192 | |||
| 184 | #ifdef CONFIG_X86_32 | 193 | #ifdef CONFIG_X86_32 |
| 185 | timer_ack = 0; | 194 | timer_ack = 0; |
| 186 | #endif | 195 | #endif |
| @@ -285,11 +294,6 @@ void acpi_nmi_enable(void) | |||
| 285 | on_each_cpu(__acpi_nmi_enable, NULL, 1); | 294 | on_each_cpu(__acpi_nmi_enable, NULL, 1); |
| 286 | } | 295 | } |
| 287 | 296 | ||
| 288 | static void __acpi_nmi_disable(void *__unused) | ||
| 289 | { | ||
| 290 | apic_write(APIC_LVT0, APIC_DM_NMI | APIC_LVT_MASKED); | ||
| 291 | } | ||
| 292 | |||
| 293 | /* | 297 | /* |
| 294 | * Disable timer based NMIs on all CPUs: | 298 | * Disable timer based NMIs on all CPUs: |
| 295 | */ | 299 | */ |
