summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2014-05-22 18:22:02 +0000
committerjhb <jhb@FreeBSD.org>2014-05-22 18:22:02 +0000
commit9578fc0e8e21fa0d07afbd84a1b35571706248dc (patch)
tree41d4327fb5c90509daaba56201bc830c2a3c09da
parent5662e763a63f075a79ac38d79e4ea69570f0f59e (diff)
downloadFreeBSD-src-9578fc0e8e21fa0d07afbd84a1b35571706248dc.zip
FreeBSD-src-9578fc0e8e21fa0d07afbd84a1b35571706248dc.tar.gz
Don't permit users to request a subset of the AVX512 or MPX xsave masks.
These masks are documented in the Intel Architecture Instruction Set Extensions Programming Reference (March 2014). Reviewed by: kib MFC after: 1 month
-rw-r--r--sys/amd64/amd64/fpu.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c
index fe10a81..d2d506a 100644
--- a/sys/amd64/amd64/fpu.c
+++ b/sys/amd64/amd64/fpu.c
@@ -199,6 +199,10 @@ fpuinit_bsp1(void)
TUNABLE_ULONG_FETCH("hw.xsave_mask", &xsave_mask_user);
xsave_mask_user |= XFEATURE_ENABLED_X87 | XFEATURE_ENABLED_SSE;
xsave_mask &= xsave_mask_user;
+ if ((xsave_mask & XFEATURE_AVX512) != XFEATURE_AVX512)
+ xsave_mask &= ~XFEATURE_AVX512;
+ if ((xsave_mask & XFEATURE_MPX) != XFEATURE_MPX)
+ xsave_mask &= ~XFEATURE_MPX;
cpuid_count(0xd, 0x1, cp);
if ((cp[0] & CPUID_EXTSTATE_XSAVEOPT) != 0) {
OpenPOWER on IntegriCloud