]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
arm: perf: use IDR types for CPU PMUs
authorMark Rutland <mark.rutland@arm.com>
Wed, 12 Sep 2012 09:53:23 +0000 (10:53 +0100)
committerWill Deacon <will.deacon@arm.com>
Thu, 30 Oct 2014 12:16:59 +0000 (12:16 +0000)
commit67b4305aab0fa993d91fa4c6ea2169cfb3f41c93
tree7151ed438a743de534dcd1c20860d64a14664653
parent548a86cae4858433cab7e101bca2c6856ab55887
arm: perf: use IDR types for CPU PMUs

For systems with heterogeneous CPUs (e.g. big.LITTLE systems) the PMUs
can be different in each cluster, and not all events can be migrated
between clusters. To allow userspace to deal with this, it must be
possible to address each PMU independently.

This patch changes PMUs to be registered with dynamic (IDR) types,
allowing them to be targeted individually. Each PMU's type can be found
in ${SYSFS_ROOT}/bus/event_source/devices/${PMU_NAME}/type.

From userspace, raw events can be targeted at a specific PMU:
$ perf stat -e ${PMU_NAME}/config=V,config1=V1,.../

Doing this does not break existing tools which use existing perf types:
when perf core can't find a PMU of matching type (in perf_init_event)
it'll iterate over the set of all PMUs. If a compatible PMU exists,
it'll be found eventually. If more than one compatible PMU exists, the
event will be handled by whichever PMU happens to be earlier in the pmus
list (which currently will be the last compatible PMU registered).

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm/kernel/perf_event.c
arch/arm/kernel/perf_event_cpu.c