Better safe than sorry: Clear all per-CPU perfctr_msr values so that no one can rearm the NMI watchdog after we released it.
Signed-off-by: Jan Kiszka <jan.kis...@web.de> --- ksrc/arch/x86/nmi_32.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/ksrc/arch/x86/nmi_32.c b/ksrc/arch/x86/nmi_32.c index 78ba905..69a392a 100644 --- a/ksrc/arch/x86/nmi_32.c +++ b/ksrc/arch/x86/nmi_32.c @@ -264,6 +264,7 @@ int rthal_nmi_request(void (*emergency) (struct pt_regs *)) void rthal_nmi_release(void) { rthal_nmi_wd_t *wd = &rthal_nmi_wds[rthal_processor_id()]; + int i; if (!rthal_linux_nmi_tick) return; @@ -276,6 +277,8 @@ void rthal_nmi_release(void) wrmsr(wd->perfctr_msr, (u32)(0 - RTHAL_CPU_FREQ), 0); else wrmsrl(wd->perfctr_msr, 0 - RTHAL_CPU_FREQ); + for (i = 0; i < NR_CPUS; i++) + rthal_nmi_wds[i].perfctr_msr = 0; touch_nmi_watchdog(); wmb(); nmi_watchdog_tick = rthal_linux_nmi_tick; _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core