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 */ }