xref: /openbmc/linux/tools/perf/arch/x86/util/env.c (revision 0cd1ca46)
1*0cd1ca46SRavi Bangoria // SPDX-License-Identifier: GPL-2.0
2*0cd1ca46SRavi Bangoria #include "linux/string.h"
3*0cd1ca46SRavi Bangoria #include "util/env.h"
4*0cd1ca46SRavi Bangoria #include "env.h"
5*0cd1ca46SRavi Bangoria 
6*0cd1ca46SRavi Bangoria bool x86__is_amd_cpu(void)
7*0cd1ca46SRavi Bangoria {
8*0cd1ca46SRavi Bangoria 	struct perf_env env = { .total_mem = 0, };
9*0cd1ca46SRavi Bangoria 	static int is_amd; /* 0: Uninitialized, 1: Yes, -1: No */
10*0cd1ca46SRavi Bangoria 
11*0cd1ca46SRavi Bangoria 	if (is_amd)
12*0cd1ca46SRavi Bangoria 		goto ret;
13*0cd1ca46SRavi Bangoria 
14*0cd1ca46SRavi Bangoria 	perf_env__cpuid(&env);
15*0cd1ca46SRavi Bangoria 	is_amd = env.cpuid && strstarts(env.cpuid, "AuthenticAMD") ? 1 : -1;
16*0cd1ca46SRavi Bangoria 
17*0cd1ca46SRavi Bangoria ret:
18*0cd1ca46SRavi Bangoria 	return is_amd >= 1 ? true : false;
19*0cd1ca46SRavi Bangoria }
20