drivers/perf: arm_pmu: expose a cpumask in sysfs
authorMark Rutland <mark.rutland@arm.com>
Fri, 9 Sep 2016 13:08:30 +0000 (14:08 +0100)
committerWill Deacon <will.deacon@arm.com>
Fri, 9 Sep 2016 13:51:51 +0000 (14:51 +0100)
commit48538b5863d8e8f8d567fc9a1d27a68623e0a0ff
treebf2feca2a3cd582ed4d0f52b16ed83e1350321f5
parent1589680da6f7df30d8a592eebee16478f3e34a2c
drivers/perf: arm_pmu: expose a cpumask in sysfs

In systems with heterogeneous CPUs, there are multiple logical CPU PMUs,
each of which covers a subset of CPUs in the system. In some cases
userspace needs to know which CPUs a given logical PMU covers, so we'd
like to expose a cpumask under sysfs, similar to what is done for uncore
PMUs.

Unfortunately, prior to commit 00e727bb389359c8 ("perf stat: Balance
opening and reading events"), perf stat only correctly handled a cpumask
holding a single CPU, and only when profiling in system-wide mode. In
other cases, the presence of a cpumask file could cause perf stat to
behave erratically.

Thus, exposing a cpumask file would break older perf binaries in cases
where they would otherwise work.

To avoid this issue while still providing userspace with the information
it needs, this patch exposes a differently-named file (cpus) under
sysfs. New tools can look for this and operate correctly, while older
tools will not be adversely affected by its presence.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
drivers/perf/arm_pmu.c
include/linux/perf/arm_pmu.h