summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/perf/tests/topology.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/perf/tests/topology.c b/tools/perf/tests/topology.c
index f54502ebef4b..bd7b859dea66 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 "dwarf-regs.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;
}