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

Reply via email to