static void acpi_nmi_disable_one(void *__unused) { if (__get_cpu_var(wd_enabled) == 0) return; __acpi_nmi_disable(NULL); __get_cpu_var(wd_enabled) = 0; if (atomic_dec_and_test(&nmi_watchdog_active)) nmi_active = 0; }
void stop_apic_nmi_watchdog(void *unused) { /* only support LOCAL and IO APICs for now */ if (!nmi_watchdog_active()) return; if (__get_cpu_var(wd_enabled) == 0) return; if (nmi_watchdog == NMI_LOCAL_APIC) lapic_watchdog_stop(); else __acpi_nmi_disable(NULL); __get_cpu_var(wd_enabled) = 0; atomic_dec(&nmi_active); }
void stop_apic_nmi_watchdog(void *unused) { struct hrtimer *hrtimer = &__get_cpu_var(nmi_watchdog_hrtimer); /* only support LOCAL and IO APICs for now */ if (!nmi_watchdog_active()) return; if (__get_cpu_var(wd_enabled) == 0) return; /* disable the hrtimer */ hrtimer_cancel(hrtimer); if (nmi_watchdog == NMI_LOCAL_APIC) lapic_watchdog_stop(); else __acpi_nmi_disable(NULL); __get_cpu_var(wd_enabled) = 0; atomic_dec(&nmi_active); }