]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
perf sample-raw: Use perf_env e_machine rather than arch
authorIan Rogers <irogers@google.com>
Tue, 2 Jun 2026 15:25:05 +0000 (08:25 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 3 Jun 2026 19:48:00 +0000 (16:48 -0300)
Use the e_machine rather than the arch to determine S390 and x86 types.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Honglei Wang <jameshongleiwang@126.com>
Cc: Jan Polensky <japo@linux.ibm.com>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/sample-raw.c
tools/perf/util/sample-raw.h

index bcf442574d6eb606059f2d3c945a09ec3fd40dd8..e20b73c0c5bd7589c0b6455223a12058bacbb323 100644 (file)
@@ -1,11 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0 */
+#include "sample-raw.h"
 
-#include <string.h>
+#include <elf.h>
 #include <linux/string.h>
-#include "evlist.h"
+
 #include "env.h"
+#include "evlist.h"
 #include "header.h"
-#include "sample-raw.h"
 #include "session.h"
 
 /*
  */
 void evlist__init_trace_event_sample_raw(struct evlist *evlist, struct perf_env *env)
 {
-       const char *arch_pf = perf_env__arch(env);
-       const char *cpuid = perf_env__cpuid(env);
+       uint16_t e_machine = perf_env__e_machine(env, /*e_flags=*/NULL);
 
-       if (arch_pf && !strcmp("s390", arch_pf))
+       if (e_machine == EM_S390) {
                evlist->trace_event_sample_raw = evlist__s390_sample_raw;
-       else if (arch_pf && !strcmp("x86", arch_pf) &&
-                cpuid && strstarts(cpuid, "AuthenticAMD") &&
-                evlist__has_amd_ibs(evlist)) {
-               evlist->trace_event_sample_raw = evlist__amd_sample_raw;
+       } else if (e_machine == EM_X86_64 || e_machine == EM_386) {
+               const char *cpuid = perf_env__cpuid(env);
+
+               if (cpuid && strstarts(cpuid, "AuthenticAMD") && evlist__has_amd_ibs(evlist))
+                       evlist->trace_event_sample_raw = evlist__amd_sample_raw;
        }
 }
index 896e9a87e373dc3a0c510b104388c0ae6a728884..c8d38c841c8c2963cd51f36773fd95723626497b 100644 (file)
@@ -2,7 +2,10 @@
 #ifndef __SAMPLE_RAW_H
 #define __SAMPLE_RAW_H 1
 
+#include <stdbool.h>
+
 struct evlist;
+struct perf_env;
 union perf_event;
 struct perf_sample;
 
@@ -12,4 +15,5 @@ bool evlist__has_amd_ibs(struct evlist *evlist);
 void evlist__amd_sample_raw(struct evlist *evlist, union perf_event *event,
                            struct perf_sample *sample);
 void evlist__init_trace_event_sample_raw(struct evlist *evlist, struct perf_env *env);
-#endif /* __PERF_EVLIST_H */
+
+#endif /* __SAMPLE_RAW_H */