linux/tools/lib/perf
Nia Su aa9265d507 perf evlist: Don't restrict uncore events to PMU CPUs
The PMU CPU map has different semantics for core and uncore PMUs.

For core PMUs, pmu_cpus contains the CPUs on which the event can be
opened. Intersect the user-requested CPU map with the PMU CPU map to
reject CPUs unsupported by the PMU.

For uncore PMUs, pmu_cpus is read from the PMU's cpumask sysfs attribute,
which lists the default CPU to open the event on per socket/die, not the
set of CPUs it can only be opened on. The user-requested CPU may override
these defaults, and the driver can redirect the event to the appropriate
control CPU.

Currently, __perf_evlist__propagate_maps() intersects the user-requested
CPU map with pmu_cpus for all PMUs. If the user-requested CPU is not in
pmu_cpus, the intersection becomes empty and the evsel is removed before
perf_event_open() is called.

Add evsel->is_pmu_uncore, set once from pmu->is_uncore at parse time,
to skip the intersection for uncore PMUs. Core PMUs, and other
non-core PMUs such as software events, breakpoints, or tracepoints,
continue to be restricted to their PMU CPU map.

Fixes: 811082e4b6 ("perf parse-events: Support user CPUs mixed with threads/processes")
Reviewed-by: Ian Rogers <irogers@google.com>
Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Nia Su <nia.su@sifive.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2026-09-25 15:29:56 +02:00
..
Documentation perf sched stats: Add record and rawdump support 2026-01-22 12:29:28 -03:00
include perf evlist: Don't restrict uncore events to PMU CPUs 2026-09-25 15:29:56 +02:00
tests libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
.gitignore libperf: Add gitignore 2024-08-01 12:11:33 -03:00
Build libperf: Change tests to single static and shared binaries 2021-07-07 11:41:58 -03:00
core.c
cpumap.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
evlist.c perf evlist: Don't restrict uncore events to PMU CPUs 2026-09-25 15:29:56 +02:00
evsel.c libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
internal.h
lib.c libperf: Add preadn() 2022-05-23 10:11:12 -03:00
libperf.map libperf cpumap: Remove perf_cpu_map__read() 2024-12-09 17:52:41 -03:00
libperf.pc.template
Makefile libperf build: Always place libperf includes first 2026-02-03 18:01:27 -03:00
mmap.c libperf mmap: In user mmap rdpmc avoid undefined behavior 2025-10-02 15:02:47 -03:00
threadmap.c libperf threadmap: Add perf_thread_map__idx() 2025-05-21 15:07:13 -03:00
TODO libperf: Document code simplification case for widening struct perf_cpu 2026-06-10 15:23:54 -03:00
xyarray.c