From b0e9dfa34c1dd974fa8945140b3b718988cab8ae Mon Sep 17 00:00:00 2001 From: Sudeep KarkadaNagesha Date: Tue, 25 Sep 2012 17:26:50 +0100 Subject: ARM: perf: register CPU PMUs with idr types In order to support multiple, heterogeneous CPU PMUs and distinguish them, they cannot be registered as PERF_TYPE_RAW type. Instead we can get perf core to allocate a new idr type id for each PMU. Userspace applications can refer sysfs entried to find a PMU's type, which can then be used in tracking events on individual PMUs. Signed-off-by: Sudeep KarkadaNagesha --- arch/arm/kernel/perf_event.c | 3 +++ arch/arm/kernel/perf_event_cpu.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index 8c3094d0f7b7..491573373f67 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c @@ -81,6 +81,9 @@ armpmu_map_event(struct perf_event *event, return armpmu_map_cache_event(cache_map, config); case PERF_TYPE_RAW: return armpmu_map_raw_event(raw_event_mask, config); + default: + if (event->attr.type >= PERF_TYPE_MAX) + return armpmu_map_raw_event(raw_event_mask, config); } return -ENOENT; diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c index 280de37056a1..f62d6cb6524a 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c @@ -285,7 +285,7 @@ static int cpu_pmu_device_probe(struct platform_device *pdev) pmu->plat_device = pdev; cpu_pmu_init(pmu); - ret = armpmu_register(pmu, PERF_TYPE_RAW); + ret = armpmu_register(pmu, -1); if (!ret) return 0; -- cgit v1.2.3