diff options
| author | Vince Weaver <vincent.weaver@maine.edu> | 2014-06-15 02:03:13 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2014-06-18 12:43:45 -0400 |
| commit | 1b92722fafe2003e49ec904f33c0020ade36bd16 (patch) | |
| tree | a66395f18c992ec43f19f6d2686aef865d89ab3d | |
| parent | 6e316f9c19a088586fd9ae058f9ea35b271571f3 (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.c | 19 |
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); |
