Skip to content

Commit 5c81672

Browse files
James-A-ClarkPeter Zijlstra
authored andcommitted
arm_pmu: Add PERF_PMU_CAP_EXTENDED_HW_TYPE capability
This capability gives us the ability to open PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE events on a specific PMU for free. All the implementation is contained in the Perf core and tool code so no change to the Arm PMU driver is needed. The following basic use case now results in Perf opening the event on all PMUs rather than picking only one in an unpredictable way: $ perf stat -e cycles -- taskset --cpu-list 0,1 stress -c 2 Performance counter stats for 'taskset --cpu-list 0,1 stress -c 2': 963279620 armv8_cortex_a57/cycles/ (99.19%) 752745657 armv8_cortex_a53/cycles/ (94.80%) Fixes: 55bcf6e ("perf: Extend PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE") Suggested-by: Ian Rogers <irogers@google.com> Signed-off-by: James Clark <james.clark@arm.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Acked-by: Ian Rogers <irogers@google.com> Link: https://lore.kernel.org/r/20230724134500.970496-2-james.clark@arm.com
1 parent 8bfc20b commit 5c81672

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

drivers/perf/arm_pmu.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -880,8 +880,13 @@ struct arm_pmu *armpmu_alloc(void)
880880
* configuration (e.g. big.LITTLE). This is not an uncore PMU,
881881
* and we have taken ctx sharing into account (e.g. with our
882882
* pmu::filter callback and pmu::event_init group validation).
883+
*
884+
* PERF_PMU_CAP_EXTENDED_HW_TYPE is required to open
885+
* PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE events on a
886+
* specific PMU.
883887
*/
884-
.capabilities = PERF_PMU_CAP_HETEROGENEOUS_CPUS | PERF_PMU_CAP_EXTENDED_REGS,
888+
.capabilities = PERF_PMU_CAP_HETEROGENEOUS_CPUS | PERF_PMU_CAP_EXTENDED_REGS |
889+
PERF_PMU_CAP_EXTENDED_HW_TYPE,
885890
};
886891

887892
pmu->attr_groups[ARMPMU_ATTR_GROUP_COMMON] =

0 commit comments

Comments
 (0)