aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVince Weaver <vincent.weaver@maine.edu>2014-06-15 02:03:13 -0400
committerIngo Molnar <mingo@kernel.org>2014-06-18 12:43:45 -0400
commit1b92722fafe2003e49ec904f33c0020ade36bd16 (patch)
treea66395f18c992ec43f19f6d2686aef865d89ab3d
parent6e316f9c19a088586fd9ae058f9ea35b271571f3 (diff)
metag, perf: Use common PMU interrupt disabled code
Transition to using the new generic PERF_PMU_CAP_NO_INTERRUPT method for failing a sampling event when no PMU interrupt is available. Signed-off-by: Vince Weaver <vincent.weaver@maine.edu> Acked-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: linux-metag@vger.kernel.org Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1406150202050.16738@vincent-weaver-1.umelst.maine.edu Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/metag/kernel/perf/perf_event.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/arch/metag/kernel/perf/perf_event.c b/arch/metag/kernel/perf/perf_event.c
index 5cc4d4dcf3cf..02c08737f6aa 100644
--- a/arch/metag/kernel/perf/perf_event.c
+++ b/arch/metag/kernel/perf/perf_event.c
@@ -568,16 +568,6 @@ static int _hw_perf_event_init(struct perf_event *event)
568 return -EINVAL; 568 return -EINVAL;
569 569
570 /* 570 /*
571 * Early cores have "limited" counters - they have no overflow
572 * interrupts - and so are unable to do sampling without extra work
573 * and timer assistance.
574 */
575 if (metag_pmu->max_period == 0) {
576 if (hwc->sample_period)
577 return -EINVAL;
578 }
579
580 /*
581 * Don't assign an index until the event is placed into the hardware. 571 * Don't assign an index until the event is placed into the hardware.
582 * -1 signifies that we're still deciding where to put it. On SMP 572 * -1 signifies that we're still deciding where to put it. On SMP
583 * systems each core has its own set of counters, so we can't do any 573 * systems each core has its own set of counters, so we can't do any
@@ -866,6 +856,15 @@ static int __init init_hw_perf_events(void)
866 pr_info("enabled with %s PMU driver, %d counters available\n", 856 pr_info("enabled with %s PMU driver, %d counters available\n",
867 metag_pmu->name, metag_pmu->max_events); 857 metag_pmu->name, metag_pmu->max_events);
868 858
859 /*
860 * Early cores have "limited" counters - they have no overflow
861 * interrupts - and so are unable to do sampling without extra work
862 * and timer assistance.
863 */
864 if (metag_pmu->max_period == 0) {
865 metag_pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT;
866 }
867
869 /* Initialise the active events and reservation mutex */ 868 /* Initialise the active events and reservation mutex */
870 atomic_set(&metag_pmu->active_events, 0); 869 atomic_set(&metag_pmu->active_events, 0);
871 mutex_init(&metag_pmu->reserve_mutex); 870 mutex_init(&metag_pmu->reserve_mutex);