Module Name:    src
Committed By:   msaitoh
Date:           Mon Mar  5 04:21:36 UTC 2018

Modified Files:
        src/sys/arch/x86/x86: procfs_machdep.c

Log Message:
- Add AMD CPUID leaf 0x80000008 ebx's xsaveerptr, ibpb, ibrs, stibp.
- Add Intel CPUID leaf 7 ebx's umip, avx512_vbmi2, gfni, vaes, vpclmulqdq,
  avx512_vnni and avx512_bitalg.
- Add Intel CPUID leaf 7 edx's avx512_4vnniw, avx512_4fmaps and
  arch_capabilities.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 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.21 src/sys/arch/x86/x86/procfs_machdep.c:1.22
--- src/sys/arch/x86/x86/procfs_machdep.c:1.21	Wed Jan 10 11:46:02 2018
+++ src/sys/arch/x86/x86/procfs_machdep.c	Mon Mar  5 04:21:36 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: procfs_machdep.c,v 1.21 2018/01/10 11:46:02 msaitoh Exp $ */
+/*	$NetBSD: procfs_machdep.c,v 1.22 2018/03/05 04:21:36 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.21 2018/01/10 11:46:02 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: procfs_machdep.c,v 1.22 2018/03/05 04:21:36 msaitoh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -151,9 +151,9 @@ static const char * const x86_features[]
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
 
-	{ /* (13) 0x80000008 ebx */
-	"clzero", "irperf", NULL, NULL, NULL, NULL, NULL, NULL,
-	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+	{ /* (13) AMD 0x80000008 ebx */
+	"clzero", "irperf", "xsaveerptr", NULL, NULL, NULL, NULL, NULL,
+	NULL, NULL, NULL, NULL, "ibpb", NULL, "ibrs", "stibp",
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
 
@@ -173,8 +173,10 @@ static const char * const x86_features[]
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
 
 	{ /* (16) 0x00000007:0 ecx */
-	NULL, "avx512vbmi", NULL, "pku", "ospke", NULL, NULL, NULL,
-	NULL, NULL, NULL, NULL, NULL, NULL, "avx512_vpopcntdq", NULL,
+	NULL, "avx512vbmi", "umip", "pku",
+	"ospke", NULL, "avx512_vbmi2", NULL,
+	"gfni", "vaes", "vpclmulqdq", "avx512_vnni",
+	"avx512_bitalg", NULL, "avx512_vpopcntdq", NULL,
 	"la57", NULL, NULL, NULL, NULL, NULL, "rdpid", NULL,
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
 
@@ -183,6 +185,12 @@ static const char * const x86_features[]
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
+
+	{ /* (18) Intel 0x00000007 edx */
+	NULL, NULL, "avx512_4vnniw", "avx512_4fmaps", 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, "arch_capabilities", NULL, NULL},
 };
 
 static int	procfs_getonecpu(int, struct cpu_info *, char *, size_t *);
@@ -336,6 +344,14 @@ procfs_getonecpufeatures(struct cpu_info
 		diff = last - *left;
 	}
 
+	if ((cpu_vendor == CPUVENDOR_INTEL)
+	    && (ci->ci_max_cpuid >= 0x00000007)) {
+		x86_cpuid(0x00000007, descs);
+		procfs_getonefeatreg(descs[3], x86_features[18], p + diff,
+		    left);
+		diff = last - *left;
+	}
+
 	return 0; /* XXX */
 }
 

Reply via email to