Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153012870
D56330.id175179.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D56330.id175179.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D56330: x86: Add zen identifier helper function
Attached
Detach File
Event Timeline
Log In to Comment