Page MenuHomeFreeBSD

D56330.id175179.diff
No OneTemporary

D56330.id175179.diff

diff --git a/sys/x86/include/specialreg.h b/sys/x86/include/specialreg.h
--- a/sys/x86/include/specialreg.h
+++ b/sys/x86/include/specialreg.h
@@ -304,6 +304,14 @@
#endif
#define CPUID_TO_STEPPING(id) ((id) & CPUID_STEPPING)
+#define CPUID_AMD_ZEN1 0x00
+#define CPUID_AMD_ZEN2 0x01
+#define CPUID_AMD_ZEN3 0x02
+#define CPUID_AMD_ZEN4 0x03
+#define CPUID_AMD_ZEN5 0x04
+#define CPUID_AMD_ZEN6 0x05
+#define CPUID_AMD_UNKNOWN 0xffffffff
+
/*
* CPUID instruction 1 ebx info
*/
diff --git a/sys/x86/include/x86_var.h b/sys/x86/include/x86_var.h
--- a/sys/x86/include/x86_var.h
+++ b/sys/x86/include/x86_var.h
@@ -132,6 +132,7 @@
void identify_cpu2(void);
void identify_cpu_ext_features(void);
void identify_cpu_fixup_bsp(void);
+u_int ident_zen_cpu(void);
void identify_hypervisor(void);
void initializecpu(void);
void initializecpucache(void);
diff --git a/sys/x86/x86/identcpu.c b/sys/x86/x86/identcpu.c
--- a/sys/x86/x86/identcpu.c
+++ b/sys/x86/x86/identcpu.c
@@ -2690,3 +2690,43 @@
#endif
return ((1ULL << cpu_maxphyaddr) - 1);
}
+
+u_int
+ident_zen_cpu(void)
+{
+ u_int model = CPUID_TO_MODEL(cpu_id);
+
+ if (cpu_vendor_id != CPU_VENDOR_AMD)
+ return (CPUID_AMD_UNKNOWN);
+ switch (CPUID_TO_FAMILY(cpu_id)) {
+ case 0x17:
+ if ((model >= 0x00 && model <= 0x2f) ||
+ (model >= 0x50 && model <= 0x5f))
+ return (CPUID_AMD_ZEN1);
+ if ((model >= 0x30 && model <= 0x4f) ||
+ (model >= 0x60 && model <= 0x7f) ||
+ (model >= 0x90 && model <= 0x91) ||
+ (model >= 0xa0 && model <= 0xaf))
+ return (CPUID_AMD_ZEN2);
+ break;
+ case 0x19:
+ if ((model >= 0x00 && model <= 0x0f) ||
+ (model >= 0x20 && model <= 0x5f))
+ return (CPUID_AMD_ZEN3);
+ if ((model >= 0x10 && model <= 0x1f) ||
+ (model >= 0x60 && model <= 0xaf))
+ return (CPUID_AMD_ZEN4);
+ break;
+ case 0x1a:
+ if ((model >= 0x00 && model <= 0x2f) ||
+ (model >= 0x40 && model <= 0x4f) ||
+ (model >= 0x60 && model <= 0x7f))
+ return (CPUID_AMD_ZEN5);
+ if ((model >= 0x50 && model <= 0x5f) ||
+ (model >= 0x80 && model <= 0xaf) ||
+ (model >= 0xc0 && model <= 0xcf))
+ return (CPUID_AMD_ZEN6);
+ }
+
+ return (CPUID_AMD_UNKNOWN);
+}

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 19, 3:16 PM (4 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31779662
Default Alt Text
D56330.id175179.diff (2 KB)

Event Timeline