perf sample-raw: Use perf_env e_machine rather than arch

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>
This commit is contained in:
Ian Rogers 2026-06-02 08:25:05 -07:00 committed by Arnaldo Carvalho de Melo
parent dfe48498e6
commit d08cb3fb0f
2 changed files with 19 additions and 14 deletions

View File

@ -1,11 +1,12 @@
/* SPDX-License-Identifier: GPL-2.0 */
#include <string.h>
#include <linux/string.h>
#include "evlist.h"
#include "env.h"
#include "header.h"
#include "sample-raw.h"
#include <elf.h>
#include <linux/string.h>
#include "env.h"
#include "evlist.h"
#include "header.h"
#include "session.h"
/*
@ -14,14 +15,14 @@
*/
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;
}
}

View 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 */