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>
This commit is contained in:
Sudeep KarkadaNagesha
2012-09-25 17:26:50 +01:00
committed by Jon Medhurst
parent 66fd721f38
commit c5cb3e02af
2 changed files with 4 additions and 1 deletions

View File

@@ -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;

View File

@@ -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;