[PATCH v8 02/17] perf tests topology: Switch env->arch use to env->e_machine

Ian Rogers
2026-05-02T06:59:56Z

Some arch string comparisons weren't normalized. Avoid potential
issues with normalized names vs uname values by swtiching to using the
e_machine.

Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/tests/topology.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/perf/tests/topology.c b/tools/perf/tests/topology.c
index f54502ebef4b..d4c5c330c679 100644
--- a/tools/perf/tests/topology.c
+++ b/tools/perf/tests/topology.c
@@ -11,6 +11,7 @@
#include "pmus.h"
#include "target.h"
#include <linux/err.h>
+#include <elf.h>

#define TEMPL "/tmp/perf-test-XXXXXX"
#define DATA_SIZE 10
@@ -74,6 +75,7 @@ static int check_cpu_topology(char *path, struct perf_cpu_map *map)
struct aggr_cpu_id id;
struct perf_cpu cpu;
struct perf_env *env;
+ uint16_t e_machine;

session = perf_session__new(&data, NULL);
TEST_ASSERT_VAL("can't get session", !IS_ERR(session));
@@ -101,7 +103,9 @@ static int check_cpu_topology(char *path, struct perf_cpu_map *map)
* condition is true (see do_core_id_test in header.c). So always
* run this test on those platforms.
*/
- if (!env->cpu && strncmp(env->arch, "s390", 4) && strncmp(env->arch, "aarch64", 7))
+ e_machine = perf_env__e_machine(env, NULL);
+
+ if (!env->cpu && e_machine != EM_S390 && e_machine != EM_AARCH64)
return TEST_SKIP;

/*
@@ -110,7 +114,7 @@ static int check_cpu_topology(char *path, struct perf_cpu_map *map)
* physical_package_id will be set to -1. Hence skip this
* test if physical_package_id returns -1 for cpu from perf_cpu_map.
*/
- if (!strncmp(env->arch, "ppc64le", 7)) {
+ if (e_machine == EM_PPC64) {
if (cpu__get_socket_id(perf_cpu_map__cpu(map, 0)) == -1)
return TEST_SKIP;
}
--
2.54.0.545.g6539524ca2-goog