@@ -2924,25 +2924,19 @@ static bool find_process(const char *name)
2924
2924
return ret ? false : true;
2925
2925
}
2926
2926
2927
- static bool is_amd (const char * arch , const char * cpuid )
2927
+ int __weak arch_evsel__open_strerror (struct evsel * evsel __maybe_unused ,
2928
+ char * msg __maybe_unused ,
2929
+ size_t size __maybe_unused )
2928
2930
{
2929
- return arch && !strcmp ("x86" , arch ) && cpuid && strstarts (cpuid , "AuthenticAMD" );
2930
- }
2931
-
2932
- static bool is_amd_ibs (struct evsel * evsel )
2933
- {
2934
- return evsel -> core .attr .precise_ip
2935
- || (evsel -> pmu_name && !strncmp (evsel -> pmu_name , "ibs" , 3 ));
2931
+ return 0 ;
2936
2932
}
2937
2933
2938
2934
int evsel__open_strerror (struct evsel * evsel , struct target * target ,
2939
2935
int err , char * msg , size_t size )
2940
2936
{
2941
- struct perf_env * env = evsel__env (evsel );
2942
- const char * arch = perf_env__arch (env );
2943
- const char * cpuid = perf_env__cpuid (env );
2944
2937
char sbuf [STRERR_BUFSIZE ];
2945
2938
int printed = 0 , enforced = 0 ;
2939
+ int ret ;
2946
2940
2947
2941
switch (err ) {
2948
2942
case EPERM :
@@ -3044,16 +3038,6 @@ int evsel__open_strerror(struct evsel *evsel, struct target *target,
3044
3038
return scnprintf (msg , size ,
3045
3039
"Invalid event (%s) in per-thread mode, enable system wide with '-a'." ,
3046
3040
evsel__name (evsel ));
3047
- if (is_amd (arch , cpuid )) {
3048
- if (is_amd_ibs (evsel )) {
3049
- if (evsel -> core .attr .exclude_kernel )
3050
- return scnprintf (msg , size ,
3051
- "AMD IBS can't exclude kernel events. Try running at a higher privilege level." );
3052
- if (!evsel -> core .system_wide )
3053
- return scnprintf (msg , size ,
3054
- "AMD IBS may only be available in system-wide/per-cpu mode. Try using -a, or -C and workload affinity" );
3055
- }
3056
- }
3057
3041
3058
3042
break ;
3059
3043
case ENODATA :
@@ -3063,6 +3047,10 @@ int evsel__open_strerror(struct evsel *evsel, struct target *target,
3063
3047
break ;
3064
3048
}
3065
3049
3050
+ ret = arch_evsel__open_strerror (evsel , msg , size );
3051
+ if (ret )
3052
+ return ret ;
3053
+
3066
3054
return scnprintf (msg , size ,
3067
3055
"The sys_perf_event_open() syscall returned with %d (%s) for event (%s).\n"
3068
3056
"/bin/dmesg | grep -i perf may provide additional information.\n" ,
0 commit comments