Date: Fri, 10 Apr 2026 13:51:54 +0000 From: ShengYi Hung <aokblast@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 2358492b0347 - main - x86: Add zen identifier helper function Message-ID: <69d9007a.3b986.545a2a38@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=2358492b0347b11178fb594069330820f11ec81f commit 2358492b0347b11178fb594069330820f11ec81f Author: ShengYi Hung <aokblast@FreeBSD.org> AuthorDate: 2026-04-09 08:14:57 +0000 Commit: ShengYi Hung <aokblast@FreeBSD.org> CommitDate: 2026-04-10 13:51:31 +0000 x86: Add zen identifier helper function Reviewed by: kib MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D56330 --- sys/x86/include/cputypes.h | 12 ++++++++++++ sys/x86/x86/identcpu.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/sys/x86/include/cputypes.h b/sys/x86/include/cputypes.h index f2bd3c2983f0..ed26304a89ac 100644 --- a/sys/x86/include/cputypes.h +++ b/sys/x86/include/cputypes.h @@ -45,4 +45,16 @@ #define CPU_VENDOR_CENTAUR CPU_VENDOR_IDT #define CPU_VENDOR_HYGON 0x1d94 /* Hygon */ +#define CPU_AMD_ZEN1 0x00 +#define CPU_AMD_ZEN2 0x01 +#define CPU_AMD_ZEN3 0x02 +#define CPU_AMD_ZEN4 0x03 +#define CPU_AMD_ZEN5 0x04 +#define CPU_AMD_ZEN6 0x05 +#define CPU_AMD_UNKNOWN 0xffffffff + +#ifdef _KERNEL +u_int ident_zen_cpu(void); +#endif + #endif /* !_X86_CPUTYPES_H_ */ diff --git a/sys/x86/x86/identcpu.c b/sys/x86/x86/identcpu.c index 7e0ccc72f7bb..75144ccae8bc 100644 --- a/sys/x86/x86/identcpu.c +++ b/sys/x86/x86/identcpu.c @@ -64,6 +64,7 @@ #include <machine/specialreg.h> #include <amd64/vmm/intel/vmx_controls.h> +#include <x86/cputypes.h> #include <x86/isa/icu.h> #include <x86/vmware.h> @@ -2690,3 +2691,49 @@ cpu_getmaxphyaddr(void) #endif return ((1ULL << cpu_maxphyaddr) - 1); } + +const static struct { + u_int family; + u_int model_min; + u_int model_max; + u_int generation; +} zen_idents[] = { + { .family = 0x17, .model_min = 0x00, .model_max = 0x2f, .generation = CPU_AMD_ZEN1 }, + { .family = 0x17, .model_min = 0x50, .model_max = 0x5f, .generation = CPU_AMD_ZEN1 }, + { .family = 0x17, .model_min = 0x30, .model_max = 0x4f, .generation = CPU_AMD_ZEN2 }, + { .family = 0x17, .model_min = 0x60, .model_max = 0x7f, .generation = CPU_AMD_ZEN2 }, + { .family = 0x17, .model_min = 0x90, .model_max = 0x91, .generation = CPU_AMD_ZEN2 }, + { .family = 0x17, .model_min = 0xa0, .model_max = 0xaf, .generation = CPU_AMD_ZEN2 }, + { .family = 0x19, .model_min = 0x00, .model_max = 0x0f, .generation = CPU_AMD_ZEN3 }, + { .family = 0x19, .model_min = 0x20, .model_max = 0x5f, .generation = CPU_AMD_ZEN3 }, + { .family = 0x19, .model_min = 0x10, .model_max = 0x1f, .generation = CPU_AMD_ZEN4 }, + { .family = 0x19, .model_min = 0x60, .model_max = 0xaf, .generation = CPU_AMD_ZEN4 }, + { .family = 0x1a, .model_min = 0x00, .model_max = 0x2f, .generation = CPU_AMD_ZEN5 }, + { .family = 0x1a, .model_min = 0x40, .model_max = 0x4f, .generation = CPU_AMD_ZEN5 }, + { .family = 0x1a, .model_min = 0x60, .model_max = 0x7f, .generation = CPU_AMD_ZEN5 }, + { .family = 0x1a, .model_min = 0x50, .model_max = 0x5f, .generation = CPU_AMD_ZEN6 }, + { .family = 0x1a, .model_min = 0x80, .model_max = 0xaf, .generation = CPU_AMD_ZEN6 }, + { .family = 0x1a, .model_min = 0xc0, .model_max = 0xcf, .generation = CPU_AMD_ZEN6 }, +}; + +u_int +ident_zen_cpu(void) +{ + u_int family = CPUID_TO_FAMILY(cpu_id); + u_int model = CPUID_TO_MODEL(cpu_id); + int i; + + if (cpu_vendor_id != CPU_VENDOR_AMD) + return (CPU_AMD_UNKNOWN); + + for (i = 0; i < nitems(zen_idents); i++) { + if (family != zen_idents[i].family) + continue; + if (model < zen_idents[i].model_min || + model > zen_idents[i].model_max) + continue; + return (zen_idents[i].generation); + } + + return (CPU_AMD_UNKNOWN); +}home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69d9007a.3b986.545a2a38>
