aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/perf_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel/perf_event.c')
-rw-r--r--arch/sh/kernel/perf_event.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c
index d042989ceb45..4bbe19058a58 100644
--- a/arch/sh/kernel/perf_event.c
+++ b/arch/sh/kernel/perf_event.c
@@ -232,7 +232,7 @@ static int sh_pmu_enable(struct perf_event *event)
232 int idx = hwc->idx; 232 int idx = hwc->idx;
233 int ret = -EAGAIN; 233 int ret = -EAGAIN;
234 234
235 perf_disable(); 235 perf_pmu_disable(event->pmu);
236 236
237 if (test_and_set_bit(idx, cpuc->used_mask)) { 237 if (test_and_set_bit(idx, cpuc->used_mask)) {
238 idx = find_first_zero_bit(cpuc->used_mask, sh_pmu->num_events); 238 idx = find_first_zero_bit(cpuc->used_mask, sh_pmu->num_events);
@@ -253,7 +253,7 @@ static int sh_pmu_enable(struct perf_event *event)
253 perf_event_update_userpage(event); 253 perf_event_update_userpage(event);
254 ret = 0; 254 ret = 0;
255out: 255out:
256 perf_enable(); 256 perf_pmu_enable(event->pmu);
257 return ret; 257 return ret;
258} 258}
259 259
@@ -285,7 +285,25 @@ static int sh_pmu_event_init(struct perf_event *event)
285 return err; 285 return err;
286} 286}
287 287
288static void sh_pmu_pmu_enable(struct pmu *pmu)
289{
290 if (!sh_pmu_initialized())
291 return;
292
293 sh_pmu->enable_all();
294}
295
296static void sh_pmu_pmu_disable(struct pmu *pmu)
297{
298 if (!sh_pmu_initialized())
299 return;
300
301 sh_pmu->disable_all();
302}
303
288static struct pmu pmu = { 304static struct pmu pmu = {
305 .pmu_enable = sh_pmu_pmu_enable,
306 .pmu_disable = sh_pmu_pmu_disable,
289 .event_init = sh_pmu_event_init, 307 .event_init = sh_pmu_event_init,
290 .enable = sh_pmu_enable, 308 .enable = sh_pmu_enable,
291 .disable = sh_pmu_disable, 309 .disable = sh_pmu_disable,
@@ -316,22 +334,6 @@ sh_pmu_notifier(struct notifier_block *self, unsigned long action, void *hcpu)
316 return NOTIFY_OK; 334 return NOTIFY_OK;
317} 335}
318 336
319void hw_perf_enable(void)
320{
321 if (!sh_pmu_initialized())
322 return;
323
324 sh_pmu->enable_all();
325}
326
327void hw_perf_disable(void)
328{
329 if (!sh_pmu_initialized())
330 return;
331
332 sh_pmu->disable_all();
333}
334
335int __cpuinit register_sh_pmu(struct sh_pmu *pmu) 337int __cpuinit register_sh_pmu(struct sh_pmu *pmu)
336{ 338{
337 if (sh_pmu) 339 if (sh_pmu)