diff options
author | Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com> | 2012-09-25 17:26:50 +0100 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2013-12-09 13:23:39 +0000 |
commit | f79a5e7a70943caef73cb680e4c3dda3b8c8b57a (patch) | |
tree | be80c32a395ed9cd184ce7d6d33d4c6fa168c533 | |
parent | 6cc023689fd4abf6ba835af0336d7b2a5ff26eb8 (diff) |
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 <sudeep.karkadanagesha@arm.com>
-rw-r--r-- | arch/arm/kernel/perf_event.c | 3 | ||||
-rw-r--r-- | arch/arm/kernel/perf_event_cpu.c | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index bc3f2efa0d86..3325e1094009 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c @@ -86,6 +86,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 dda003530db9..79bda8be7255 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c @@ -286,7 +286,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; |