linux/tools/lib/perf/include/internal
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
..
cpumap.h libperf cpumap: Make index and nr types unsigned 2026-04-01 14:50:53 -07:00
evlist.h libperf evlist: Avoid out-of-bounds access 2024-02-29 13:57:02 -08:00
evsel.h perf evlist: Don't restrict uncore events to PMU CPUs 2026-09-25 15:29:56 +02:00
lib.h libperf: Add preadn() 2022-05-23 10:11:12 -03:00
mmap.h libperf: Lazily allocate/size mmap event copy 2023-11-30 19:25:19 -03:00
rc_check.h libperf rc_check: Add RC_CHK_EQUAL 2023-10-25 13:37:22 -07:00
tests.h libperf tests: Fix verbose printing 2021-08-24 15:05:35 -03:00
threadmap.h
xyarray.h libperf xyarray: Add bounds checks to xyarray__entry() 2021-04-20 08:11:33 -03:00