powerpc/perf: Clear all MMCR settings before calling compute_mmcr()
authorMichael Ellerman <mpe@ellerman.id.au>
Wed, 23 Jul 2014 11:12:36 +0000 (21:12 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 28 Jul 2014 04:11:34 +0000 (14:11 +1000)
Because we reuse cpuhw->mmcr on each call to compute_mmcr() there's a
risk that we could forget to set one of the values and use whatever
value was in there previously.

Currently all the implementations are careful to set all the values, but
it's safer to clear them all before we call compute_mmcr().

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/perf/core-book3s.c

index fe52db2eea6a35c4f1810e411beb6b9aeba4e703..f82c0973866ff39e2ba6e9538c4d20bbfb6c03b0 100644 (file)
@@ -1219,8 +1219,10 @@ static void power_pmu_enable(struct pmu *pmu)
        }
 
        /*
-        * Compute MMCR* values for the new set of events
+        * Clear all MMCR settings and recompute them for the new set of events.
         */
+       memset(cpuhw->mmcr, 0, sizeof(cpuhw->mmcr));
+
        if (ppmu->compute_mmcr(cpuhw->events, cpuhw->n_events, hwc_index,
                               cpuhw->mmcr)) {
                /* shouldn't ever get here */