Module Name: src
Committed By: msaitoh
Date: Sat Jul 10 17:33:28 UTC 2021
Modified Files:
src/sys/arch/x86/x86: procfs_machdep.c
Log Message:
Add v_spec_ctrl, avx512_fp16, sme, sev and sev_es. Tested by nonaka@.
To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/x86/x86/procfs_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/x86/x86/procfs_machdep.c
diff -u src/sys/arch/x86/x86/procfs_machdep.c:1.40 src/sys/arch/x86/x86/procfs_machdep.c:1.41
--- src/sys/arch/x86/x86/procfs_machdep.c:1.40 Mon Nov 30 00:04:02 2020
+++ src/sys/arch/x86/x86/procfs_machdep.c Sat Jul 10 17:33:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: procfs_machdep.c,v 1.40 2020/11/30 00:04:02 msaitoh Exp $ */
+/* $NetBSD: procfs_machdep.c,v 1.41 2021/07/10 17:33:28 msaitoh Exp $ */
/*
* Copyright (c) 2001 Wasabi Systems, Inc.
@@ -42,7 +42,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: procfs_machdep.c,v 1.40 2020/11/30 00:04:02 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: procfs_machdep.c,v 1.41 2021/07/10 17:33:28 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -82,11 +82,13 @@ static const char * const x86_features[]
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
{ /* (3) Linux mapping */
- "cxmmx", NULL, "cyrix_arr", "centaur_mcr", NULL,
- "constant_tsc", NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
+ "cxmmx", "k6_mtrr", "cyrix_arr", "centaur_mcr", NULL, NULL, NULL, NULL,
+ "constant_tsc", "up", "art", "arch_perfmon",
+ "pebs", "bts", NULL, NULL,
+ "rep_good", NULL, NULL, "acc_power",
+ "nopl", NULL, "xtopology", "tsc_reliable",
+ "nonstop_tsc", "cpuid", "extd_apicid", "amd_dcm",
+ "aperfmperf", "rapl", "nonstop_tsc_s3", "tsc_known_freq"},
{ /* (4) Intel-defined: 0x00000001 ecx */
"pni", "pclmulqdq", "dtes64", "monitor", "ds_cpl", "vmx", "smx", "est",
@@ -112,7 +114,7 @@ static const char * const x86_features[]
{ /* (7) Linux mapping */
NULL, NULL, "cpb", "ebp", NULL, "pln", "pts", "dtherm",
- "hw_pstate", "proc_feedback", "sme", NULL,
+ "hw_pstate", "proc_feedback", NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, "ibrs", "ibpb", "stibp", NULL, NULL, NULL, NULL},
@@ -165,12 +167,12 @@ static const char * const x86_features[]
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
- { /* (15) 0x8000000a edx */
+ { /* (15) AMD 0x8000000a edx */
"npt", "lbrv", "svm_lock", "nrip_save",
"tsc_scale", "vmcb_clean", "flushbyasid", "decodeassists",
NULL, NULL, "pausefilter", NULL, "pfthreshold", "avic", NULL,
"v_vmsave_vmload",
- "vgif", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ "vgif", NULL, NULL, NULL, "v_spec_ctrl", NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
{ /* (16) 0x00000007:0 ecx */
@@ -190,9 +192,15 @@ static const char * const x86_features[]
{ /* (18) Intel 0x00000007 edx */
NULL, NULL, "avx512_4vnniw", "avx512_4fmaps", "fsrm", NULL, NULL, NULL,
"vp2intersect", NULL, "md_clear", NULL, NULL, NULL, "serialize", NULL,
- "tsxldtrk", NULL, "pconfig", NULL, NULL, NULL, NULL, NULL,
+ "tsxldtrk", NULL, "pconfig", NULL, NULL, NULL, NULL, "avx512_fp16",
NULL, NULL, NULL, NULL,
"flush_l1d", "arch_capabilities", NULL, "ssbd"},
+
+ { /* (19) AMD 0x8000001f eax */
+ "sme", "sev", NULL, "sev_es", NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
};
static int procfs_getonecpu(int, struct cpu_info *, char *, size_t *);
@@ -354,6 +362,14 @@ procfs_getonecpufeatures(struct cpu_info
diff = last - *left;
}
+ if ((cpu_vendor == CPUVENDOR_AMD)
+ && (ci->ci_max_ext_cpuid >= 0x80000019)) {
+ x86_cpuid(0x8000001f, descs);
+ procfs_getonefeatreg(descs[0], x86_features[19], p + diff,
+ left);
+ diff = last - *left;
+ }
+
return 0; /* XXX */
}