diff options
author | jhb <jhb@FreeBSD.org> | 2014-05-22 18:22:02 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2014-05-22 18:22:02 +0000 |
commit | 9578fc0e8e21fa0d07afbd84a1b35571706248dc (patch) | |
tree | 41d4327fb5c90509daaba56201bc830c2a3c09da | |
parent | 5662e763a63f075a79ac38d79e4ea69570f0f59e (diff) | |
download | FreeBSD-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.c | 4 |
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) { |