void disable_timer_nmi_watchdog(void) { unset_nmi_callback(); old_ioapic_count = atomic_read(&nmi_watchdog_active); atomic_set(&nmi_watchdog_active, -1); nmi_active = -1; }
static void nmi_shutdown(void) { nmi_enabled = 0; on_each_cpu(nmi_cpu_shutdown, NULL, 0, 1); unset_nmi_callback(); release_lapic_nmi(); free_msrs(); }
void disable_timer_nmi_watchdog(void) { if ((nmi_watchdog != NMI_IO_APIC) || (nmi_active <= 0)) return; unset_nmi_callback(); nmi_active = -1; nmi_watchdog = NMI_NONE; }
void disable_timer_nmi_watchdog(void) { if ((nmi_watchdog != NMI_IO_APIC) || (atomic_read(&nmi_watchdog_active) <= 0)) return; unset_nmi_callback(); old_ioapic_count = atomic_read(&nmi_watchdog_active); atomic_set(&nmi_watchdog_active, -1); nmi_active = -1; }
static void timer_stop(void) { enable_timer_nmi_watchdog(); unset_nmi_callback(); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15) synchronize_sched(); /* Allow already-started NMIs to complete. */ #else synchronize_kernel(); #endif #ifdef RRPROFILE disable_poll_idle(); #endif // RRPROFILE }
/* * proc handler for /proc/sys/kernel/unknown_nmi_panic */ int proc_unknown_nmi_panic(struct ctl_table *table, int write, struct file *file, void __user *buffer, size_t *length, loff_t *ppos) { int old_state; old_state = unknown_nmi_panic; proc_dointvec(table, write, file, buffer, length, ppos); if (!!old_state == !!unknown_nmi_panic) return 0; if (unknown_nmi_panic) { if (reserve_lapic_nmi() < 0) { unknown_nmi_panic = 0; return -EBUSY; } else { set_nmi_callback(unknown_nmi_panic_callback); } } else { release_lapic_nmi(); unset_nmi_callback(); } return 0; }
static void timer_stop(void) { enable_timer_nmi_watchdog(); unset_nmi_callback(); synchronize_kernel(); }
void nmi_disable_virq(void) { unset_nmi_callback(); }