Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

perf cpumap: Fix die and cluster IDs

Now that filename__read_int() returns -errno instead of -1 these
statements need to be updated otherwise error values will be used as
die IDs.

This appears as a -2 die ID when the platform doesn't export one:

$ perf stat --per-core -a -- true

S36-D-2-C0 1 9.45 msec cpu-clock

And the session topology test fails:

$ perf test -vvv topology

CPU 0, core 0, socket 36
CPU 1, core 1, socket 36
CPU 2, core 2, socket 36
CPU 3, core 3, socket 36
FAILED tests/topology.c:137 Cpu map - Die ID doesn't match
---- end(-1) ----
38: Session topology : FAILED!

Fixes: 05be17eed774 ("tool api fs: Correctly encode errno for read/write open failures")
Reported-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: James Clark <james.clark@linaro.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20241218115552.912517-1-james.clark@linaro.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>

authored by

James Clark and committed by
Namhyung Kim
9fae5884 72d81e10

+2 -2
+2 -2
tools/perf/util/cpumap.c
··· 293 293 294 294 die = cpu__get_die_id(cpu); 295 295 /* There is no die_id on legacy system. */ 296 - if (die == -1) 296 + if (die < 0) 297 297 die = 0; 298 298 299 299 /* ··· 322 322 struct aggr_cpu_id id; 323 323 324 324 /* There is no cluster_id on legacy system. */ 325 - if (cluster == -1) 325 + if (cluster < 0) 326 326 cluster = 0; 327 327 328 328 id = aggr_cpu_id__die(cpu, data);