aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/perf
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2014-07-23 07:12:37 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-07-28 00:30:47 -0400
commit8abd818fc76705065f3699a753ad2df594dafe86 (patch)
tree637f4dd5007249d03f8ce82b7ccf582646a1736c /arch/powerpc/perf
parent79a4cb28a07c4e24103d00741a3dc2618532efe6 (diff)
powerpc/perf: Pass the struct perf_events down to compute_mmcr()
To support per-event exclude settings on Power8 we need access to the struct perf_events in compute_mmcr(). Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/perf')
-rw-r--r--arch/powerpc/perf/core-book3s.c2
-rw-r--r--arch/powerpc/perf/mpc7450-pmu.c5
-rw-r--r--arch/powerpc/perf/power4-pmu.c2
-rw-r--r--arch/powerpc/perf/power5+-pmu.c2
-rw-r--r--arch/powerpc/perf/power5-pmu.c2
-rw-r--r--arch/powerpc/perf/power6-pmu.c2
-rw-r--r--arch/powerpc/perf/power7-pmu.c2
-rw-r--r--arch/powerpc/perf/power8-pmu.c3
-rw-r--r--arch/powerpc/perf/ppc970-pmu.c2
9 files changed, 12 insertions, 10 deletions
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
index f82c0973866f..01b30238d7d1 100644
--- a/arch/powerpc/perf/core-book3s.c
+++ b/arch/powerpc/perf/core-book3s.c
@@ -1224,7 +1224,7 @@ static void power_pmu_enable(struct pmu *pmu)
1224 memset(cpuhw->mmcr, 0, sizeof(cpuhw->mmcr)); 1224 memset(cpuhw->mmcr, 0, sizeof(cpuhw->mmcr));
1225 1225
1226 if (ppmu->compute_mmcr(cpuhw->events, cpuhw->n_events, hwc_index, 1226 if (ppmu->compute_mmcr(cpuhw->events, cpuhw->n_events, hwc_index,
1227 cpuhw->mmcr)) { 1227 cpuhw->mmcr, cpuhw->event)) {
1228 /* shouldn't ever get here */ 1228 /* shouldn't ever get here */
1229 printk(KERN_ERR "oops compute_mmcr failed\n"); 1229 printk(KERN_ERR "oops compute_mmcr failed\n");
1230 goto out; 1230 goto out;
diff --git a/arch/powerpc/perf/mpc7450-pmu.c b/arch/powerpc/perf/mpc7450-pmu.c
index fe21b515ca44..d115c5635bf3 100644
--- a/arch/powerpc/perf/mpc7450-pmu.c
+++ b/arch/powerpc/perf/mpc7450-pmu.c
@@ -260,8 +260,9 @@ static const u32 pmcsel_mask[N_COUNTER] = {
260/* 260/*
261 * Compute MMCR0/1/2 values for a set of events. 261 * Compute MMCR0/1/2 values for a set of events.
262 */ 262 */
263static int mpc7450_compute_mmcr(u64 event[], int n_ev, 263static int mpc7450_compute_mmcr(u64 event[], int n_ev, unsigned int hwc[],
264 unsigned int hwc[], unsigned long mmcr[]) 264 unsigned long mmcr[],
265 struct perf_event *pevents[])
265{ 266{
266 u8 event_index[N_CLASSES][N_COUNTER]; 267 u8 event_index[N_CLASSES][N_COUNTER];
267 int n_classevent[N_CLASSES]; 268 int n_classevent[N_CLASSES];
diff --git a/arch/powerpc/perf/power4-pmu.c b/arch/powerpc/perf/power4-pmu.c
index 9103a1de864d..ce6072fa481b 100644
--- a/arch/powerpc/perf/power4-pmu.c
+++ b/arch/powerpc/perf/power4-pmu.c
@@ -356,7 +356,7 @@ static int p4_get_alternatives(u64 event, unsigned int flags, u64 alt[])
356} 356}
357 357
358static int p4_compute_mmcr(u64 event[], int n_ev, 358static int p4_compute_mmcr(u64 event[], int n_ev,
359 unsigned int hwc[], unsigned long mmcr[]) 359 unsigned int hwc[], unsigned long mmcr[], struct perf_event *pevents[])
360{ 360{
361 unsigned long mmcr0 = 0, mmcr1 = 0, mmcra = 0; 361 unsigned long mmcr0 = 0, mmcr1 = 0, mmcra = 0;
362 unsigned int pmc, unit, byte, psel, lower; 362 unsigned int pmc, unit, byte, psel, lower;
diff --git a/arch/powerpc/perf/power5+-pmu.c b/arch/powerpc/perf/power5+-pmu.c
index b03b6dc0172d..0526dac66007 100644
--- a/arch/powerpc/perf/power5+-pmu.c
+++ b/arch/powerpc/perf/power5+-pmu.c
@@ -452,7 +452,7 @@ static int power5p_marked_instr_event(u64 event)
452} 452}
453 453
454static int power5p_compute_mmcr(u64 event[], int n_ev, 454static int power5p_compute_mmcr(u64 event[], int n_ev,
455 unsigned int hwc[], unsigned long mmcr[]) 455 unsigned int hwc[], unsigned long mmcr[], struct perf_event *pevents[])
456{ 456{
457 unsigned long mmcr1 = 0; 457 unsigned long mmcr1 = 0;
458 unsigned long mmcra = 0; 458 unsigned long mmcra = 0;
diff --git a/arch/powerpc/perf/power5-pmu.c b/arch/powerpc/perf/power5-pmu.c
index 1e8ce423c3af..4dc99f9f7962 100644
--- a/arch/powerpc/perf/power5-pmu.c
+++ b/arch/powerpc/perf/power5-pmu.c
@@ -383,7 +383,7 @@ static int power5_marked_instr_event(u64 event)
383} 383}
384 384
385static int power5_compute_mmcr(u64 event[], int n_ev, 385static int power5_compute_mmcr(u64 event[], int n_ev,
386 unsigned int hwc[], unsigned long mmcr[]) 386 unsigned int hwc[], unsigned long mmcr[], struct perf_event *pevents[])
387{ 387{
388 unsigned long mmcr1 = 0; 388 unsigned long mmcr1 = 0;
389 unsigned long mmcra = MMCRA_SDAR_DCACHE_MISS | MMCRA_SDAR_ERAT_MISS; 389 unsigned long mmcra = MMCRA_SDAR_DCACHE_MISS | MMCRA_SDAR_ERAT_MISS;
diff --git a/arch/powerpc/perf/power6-pmu.c b/arch/powerpc/perf/power6-pmu.c
index 31128e086fed..9c9d646b68a1 100644
--- a/arch/powerpc/perf/power6-pmu.c
+++ b/arch/powerpc/perf/power6-pmu.c
@@ -175,7 +175,7 @@ static int power6_marked_instr_event(u64 event)
175 * Assign PMC numbers and compute MMCR1 value for a set of events 175 * Assign PMC numbers and compute MMCR1 value for a set of events
176 */ 176 */
177static int p6_compute_mmcr(u64 event[], int n_ev, 177static int p6_compute_mmcr(u64 event[], int n_ev,
178 unsigned int hwc[], unsigned long mmcr[]) 178 unsigned int hwc[], unsigned long mmcr[], struct perf_event *pevents[])
179{ 179{
180 unsigned long mmcr1 = 0; 180 unsigned long mmcr1 = 0;
181 unsigned long mmcra = MMCRA_SDAR_DCACHE_MISS | MMCRA_SDAR_ERAT_MISS; 181 unsigned long mmcra = MMCRA_SDAR_DCACHE_MISS | MMCRA_SDAR_ERAT_MISS;
diff --git a/arch/powerpc/perf/power7-pmu.c b/arch/powerpc/perf/power7-pmu.c
index 56c67bca2f75..5b62f2389290 100644
--- a/arch/powerpc/perf/power7-pmu.c
+++ b/arch/powerpc/perf/power7-pmu.c
@@ -245,7 +245,7 @@ static int power7_marked_instr_event(u64 event)
245} 245}
246 246
247static int power7_compute_mmcr(u64 event[], int n_ev, 247static int power7_compute_mmcr(u64 event[], int n_ev,
248 unsigned int hwc[], unsigned long mmcr[]) 248 unsigned int hwc[], unsigned long mmcr[], struct perf_event *pevents[])
249{ 249{
250 unsigned long mmcr1 = 0; 250 unsigned long mmcr1 = 0;
251 unsigned long mmcra = MMCRA_SDAR_DCACHE_MISS | MMCRA_SDAR_ERAT_MISS; 251 unsigned long mmcra = MMCRA_SDAR_DCACHE_MISS | MMCRA_SDAR_ERAT_MISS;
diff --git a/arch/powerpc/perf/power8-pmu.c b/arch/powerpc/perf/power8-pmu.c
index 639cd9156585..19bbddf495dd 100644
--- a/arch/powerpc/perf/power8-pmu.c
+++ b/arch/powerpc/perf/power8-pmu.c
@@ -393,7 +393,8 @@ static int power8_get_constraint(u64 event, unsigned long *maskp, unsigned long
393} 393}
394 394
395static int power8_compute_mmcr(u64 event[], int n_ev, 395static int power8_compute_mmcr(u64 event[], int n_ev,
396 unsigned int hwc[], unsigned long mmcr[]) 396 unsigned int hwc[], unsigned long mmcr[],
397 struct perf_event *pevents[])
397{ 398{
398 unsigned long mmcra, mmcr1, unit, combine, psel, cache, val; 399 unsigned long mmcra, mmcr1, unit, combine, psel, cache, val;
399 unsigned int pmc, pmc_inuse; 400 unsigned int pmc, pmc_inuse;
diff --git a/arch/powerpc/perf/ppc970-pmu.c b/arch/powerpc/perf/ppc970-pmu.c
index 20139ceeacf6..8b6a8a36fa38 100644
--- a/arch/powerpc/perf/ppc970-pmu.c
+++ b/arch/powerpc/perf/ppc970-pmu.c
@@ -257,7 +257,7 @@ static int p970_get_alternatives(u64 event, unsigned int flags, u64 alt[])
257} 257}
258 258
259static int p970_compute_mmcr(u64 event[], int n_ev, 259static int p970_compute_mmcr(u64 event[], int n_ev,
260 unsigned int hwc[], unsigned long mmcr[]) 260 unsigned int hwc[], unsigned long mmcr[], struct perf_event *pevents[])
261{ 261{
262 unsigned long mmcr0 = 0, mmcr1 = 0, mmcra = 0; 262 unsigned long mmcr0 = 0, mmcr1 = 0, mmcra = 0;
263 unsigned int pmc, unit, byte, psel; 263 unsigned int pmc, unit, byte, psel;