From 9282fe9cdbaeb1547112c8da13d6314620f194d4 Mon Sep 17 00:00:00 2001 From: Joseph Koshy Date: Tue, 28 Mar 2006 14:09:21 +0000 Subject: [PATCH] Forcibly turn off all PMCs at module unload time. MFC after: 1 week --- sys/dev/hwpmc/hwpmc_piv.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/dev/hwpmc/hwpmc_piv.c b/sys/dev/hwpmc/hwpmc_piv.c index f0701c8e7c35..1a98a3d338b0 100644 --- a/sys/dev/hwpmc/hwpmc_piv.c +++ b/sys/dev/hwpmc/hwpmc_piv.c @@ -674,6 +674,7 @@ p4_init(int cpu) static int p4_cleanup(int cpu) { + int i; struct p4_cpu *pcs; PMCDBG(MDP,INI,0, "p4-cleanup cpu=%d", cpu); @@ -681,6 +682,11 @@ p4_cleanup(int cpu) if ((pcs = (struct p4_cpu *) pmc_pcpu[cpu]) == NULL) return 0; + /* Turn off all PMCs on this CPU */ + for (i = 0; i < P4_NPMCS - 1; i++) + wrmsr(P4_CCCR_MSR_FIRST + i, + rdmsr(P4_CCCR_MSR_FIRST + i) & ~P4_CCCR_ENABLE); + /* * If the CPU is physical we need to teardown the * full MD state.