Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-9]: src Pull up following revision(s) (requested by msaitoh in ti...
details: https://anonhg.NetBSD.org/src/rev/5c6357b2f27a
branches: netbsd-9
changeset: 454746:5c6357b2f27a
user: martin <martin%NetBSD.org@localhost>
date: Thu Sep 26 18:47:14 2019 +0000
description:
Pull up following revision(s) (requested by msaitoh in ticket #241):
sys/arch/x86/include/specialreg.h: revision 1.152
sys/arch/x86/include/specialreg.h: revision 1.153
usr.sbin/cpuctl/arch/i386.c: revision 1.105
sys/arch/x86/x86/spectre.c: revision 1.30
sys/arch/x86/include/specialreg.h: revision 1.151
Add definitions of AMD's CPUID Fn8000_0008 %ebx.
Decode AMD's CPUID Fn8000_0008 %ebx.
Use macro.
Add MCOMMIT instruction.
Define CPUID_CAPEX_FLAGS's bit 10 correctly.
diffstat:
sys/arch/x86/include/specialreg.h | 35 ++++++++++++++++++++++++++++++++++-
sys/arch/x86/x86/spectre.c | 6 +++---
usr.sbin/cpuctl/arch/i386.c | 14 ++++++++++----
3 files changed, 47 insertions(+), 8 deletions(-)
diffs (113 lines):
diff -r 35a85d6b6079 -r 5c6357b2f27a sys/arch/x86/include/specialreg.h
--- a/sys/arch/x86/include/specialreg.h Wed Sep 25 15:47:36 2019 +0000
+++ b/sys/arch/x86/include/specialreg.h Thu Sep 26 18:47:14 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: specialreg.h,v 1.150 2019/07/26 10:03:40 msaitoh Exp $ */
+/* $NetBSD: specialreg.h,v 1.150.2.1 2019/09/26 18:47:14 martin Exp $ */
/*
* Copyright (c) 2014-2019 The NetBSD Foundation, Inc.
@@ -712,6 +712,39 @@
"\11" "TSC" "\12" "CPB" "\13" "EffFreq" "\14" "PROCFI" \
"\15" "PROCPR" "\16" "CONNSTBY" "\17" "RAPL"
+/*
+ * AMD Processor Capacity Parameters and Extended Features
+ * CPUID Fn8000_0008
+ * %eax: Long Mode Size Identifiers
+ * %ebx: Extended Feature Identifiers
+ * %ecx: Size Identifiers
+ */
+
+/* %ebx */
+#define CPUID_CAPEX_CLZERO __BIT(0) /* CLZERO instruction */
+#define CPUID_CAPEX_IRPERF __BIT(1) /* InstRetCntMsr */
+#define CPUID_CAPEX_XSAVEERPTR __BIT(2) /* RstrFpErrPtrs by XRSTOR */
+#define CPUID_CAPEX_RDPRU __BIT(4) /* RDPRU instruction */
+#define CPUID_CAPEX_MCOMMIT __BIT(8) /* MCOMMIT instruction */
+#define CPUID_CAPEX_WBNOINVD __BIT(9) /* WBNOINVD instruction */
+#define CPUID_CAPEX_IBPB __BIT(12) /* Speculation Control IBPB */
+#define CPUID_CAPEX_IBRS __BIT(14) /* Speculation Control IBRS */
+#define CPUID_CAPEX_STIBP __BIT(15) /* Speculation Control STIBP */
+#define CPUID_CAPEX_IBRS_ALWAYSON __BIT(16) /* IBRS always on mode */
+#define CPUID_CAPEX_STIBP_ALWAYSON __BIT(17) /* STIBP always on mode */
+#define CPUID_CAPEX_PREFER_IBRS __BIT(18) /* IBRS preferred */
+#define CPUID_CAPEX_SSBD __BIT(24) /* Speculation Control SSBD */
+#define CPUID_CAPEX_VIRT_SSBD __BIT(25) /* Virt Spec Control SSBD */
+#define CPUID_CAPEX_SSB_NO __BIT(26) /* SSBD not required */
+
+#define CPUID_CAPEX_FLAGS "\20" \
+ "\1CLZERO" "\2IRPERF" "\3XSAVEERPTR" \
+ "\5RDPRU" "\7B6" \
+ "\11MCOMMIT" "\12WBNOINVD" "\13B10" \
+ "\15IBPB" "\16B13" "\17IBRS" "\20STIBP" \
+ "\21IBRS_ALWAYSON" "\22STIBP_ALWAYSON" "\23PREFER_IBRS" "\24B19" \
+ "\31SSBD" "\32VIRT_SSBD" "\33SSB_NO"
+
/* AMD Fn8000000a %edx features (SVM features) */
#define CPUID_AMD_SVM_NP 0x00000001
#define CPUID_AMD_SVM_LbrVirt 0x00000002
diff -r 35a85d6b6079 -r 5c6357b2f27a sys/arch/x86/x86/spectre.c
--- a/sys/arch/x86/x86/spectre.c Wed Sep 25 15:47:36 2019 +0000
+++ b/sys/arch/x86/x86/spectre.c Thu Sep 26 18:47:14 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: spectre.c,v 1.29 2019/06/01 06:54:28 maxv Exp $ */
+/* $NetBSD: spectre.c,v 1.29.2.1 2019/09/26 18:47:14 martin Exp $ */
/*
* Copyright (c) 2018-2019 NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: spectre.c,v 1.29 2019/06/01 06:54:28 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: spectre.c,v 1.29.2.1 2019/09/26 18:47:14 martin Exp $");
#include "opt_spectre.h"
@@ -435,7 +435,7 @@
break;
}
x86_cpuid(0x80000008, descs);
- if (descs[1] & __BIT(26)) {
+ if (descs[1] & CPUID_CAPEX_SSB_NO) {
/* Not vulnerable to SpectreV4. */
v4_mitigation_method = V4_MITIGATION_AMD_SSB_NO;
return;
diff -r 35a85d6b6079 -r 5c6357b2f27a usr.sbin/cpuctl/arch/i386.c
--- a/usr.sbin/cpuctl/arch/i386.c Wed Sep 25 15:47:36 2019 +0000
+++ b/usr.sbin/cpuctl/arch/i386.c Thu Sep 26 18:47:14 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: i386.c,v 1.104 2019/07/26 10:03:40 msaitoh Exp $ */
+/* $NetBSD: i386.c,v 1.104.2.1 2019/09/26 18:47:14 martin Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: i386.c,v 1.104 2019/07/26 10:03:40 msaitoh Exp $");
+__RCSID("$NetBSD: i386.c,v 1.104.2.1 2019/09/26 18:47:14 martin Exp $");
#endif /* not lint */
#include <sys/types.h>
@@ -2292,10 +2292,16 @@
ci->ci_max_ext_cpuid = descs[0];
else
ci->ci_max_ext_cpuid = 0;
- if (descs[0] >= 0x80000007)
+ if (ci->ci_max_ext_cpuid >= 0x80000007)
powernow_probe(ci);
- if ((descs[0] >= 0x8000000a)
+ if (ci->ci_max_ext_cpuid >= 0x80000008) {
+ x86_cpuid(0x80000008, descs);
+ print_bits(cpuname, "AMD Extended features",
+ CPUID_CAPEX_FLAGS, descs[1]);
+ }
+
+ if ((ci->ci_max_ext_cpuid >= 0x8000000a)
&& (ci->ci_feat_val[3] & CPUID_SVM) != 0) {
x86_cpuid(0x8000000a, descs);
aprint_verbose("%s: SVM Rev. %d\n", cpuname,
Home |
Main Index |
Thread Index |
Old Index