lkml.org 
[lkml]   [2007]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] [21/58] i386: Reserve the right performance counter for the Intel PerfMon NMI watchdog
Date

From: [** iso-8859-1 charset **] BjörnSteinbrink <B.Steinbrink@gmx.de>

The Intel PerfMon NMI watchdog was using the generic reservation
function which always reserves the first performance counter. But the
watchdog actually uses the second performance counter, thus we need a
specialised function.

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Andi Kleen <ak@suse.de>

---
arch/i386/kernel/cpu/perfctr-watchdog.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)

Index: linux/arch/i386/kernel/cpu/perfctr-watchdog.c
===================================================================
--- linux.orig/arch/i386/kernel/cpu/perfctr-watchdog.c
+++ linux/arch/i386/kernel/cpu/perfctr-watchdog.c
@@ -593,9 +593,27 @@ static int setup_intel_arch_watchdog(uns
return 1;
}

+static int intel_arch_reserve(void)
+{
+ if (!reserve_perfctr_nmi(MSR_ARCH_PERFMON_PERFCTR1))
+ return 0;
+
+ if (!reserve_evntsel_nmi(MSR_ARCH_PERFMON_EVENTSEL1)) {
+ release_perfctr_nmi(MSR_ARCH_PERFMON_PERFCTR1);
+ return 0;
+ }
+ return 1;
+}
+
+static void intel_arch_unreserve(void)
+{
+ release_evntsel_nmi(MSR_ARCH_PERFMON_EVENTSEL1);
+ release_perfctr_nmi(MSR_ARCH_PERFMON_PERFCTR1);
+}
+
static struct wd_ops intel_arch_wd_ops = {
- .reserve = single_msr_reserve,
- .unreserve = single_msr_unreserve,
+ .reserve = intel_arch_reserve,
+ .unreserve = intel_arch_unreserve,
.setup = setup_intel_arch_watchdog,
.rearm = p6_rearm,
.stop = single_msr_stop_watchdog,
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2007-07-19 12:09    [W:0.348 / U:0.228 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site