The session topology test fails in powerpc pSeries platform. Test logs: <<>> Session topology : FAILED! <<>>
This testcases tests cpu topology by checking the core_id and socket_id stored in perf_env from perf session. The data from perf session is compared with the cpu topology information from "/sys/devices/system/cpu/cpuX/topology" like core_id, physical_package_id. In case of virtual environment, detail like physical_package_id is restricted to be exposed. Hence physical_package_id is set to -1. The testcase fails on such platforms since socket_id can't be fetched from topology info. Skip the testcase in powerpc for pSeries. Use the utility function "cpuinfo_field" to check platform from /proc/cpuinfo. Signed-off-by: Athira Rajeev <atraj...@linux.vnet.ibm.com> --- tools/perf/tests/topology.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/perf/tests/topology.c b/tools/perf/tests/topology.c index ee1e3dcbc0bd..0ddcafa158db 100644 --- a/tools/perf/tests/topology.c +++ b/tools/perf/tests/topology.c @@ -109,6 +109,23 @@ static int check_cpu_topology(char *path, struct perf_cpu_map *map) && strncmp(session->header.env.arch, "aarch64", 7)) return TEST_SKIP; + /* + * In powerpc pSeries platform, not all the topology information + * are exposed via sysfs. Due to restriction, detail like + * physical_package_id will be set to -1. Hence skip this + * test for pSeries. + */ + if (strncmp(session->header.env.arch, "powerpc", 7)) { + char *cpuinfo_platform = NULL; + + cpuinfo_platform = cpuinfo_field("platform"); + if (!strcmp(cpuinfo_platform, "pSeries")) { + free(cpuinfo_platform); + return TEST_SKIP; + } + free(cpuinfo_platform); + } + TEST_ASSERT_VAL("Session header CPU map not set", session->header.env.cpu); for (i = 0; i < session->header.env.nr_cpus_avail; i++) { -- 2.35.1