Message ID | 20230224223607.1580880-4-aaronlewis@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Clean up the supported xfeatures | expand |
diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index b2e7407cd114..76379a51a16d 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -68,6 +68,10 @@ static u64 sanitize_xcr0(u64 xcr0) if ((xcr0 & mask) != mask) xcr0 &= ~mask; + mask = XFEATURE_MASK_AVX512; + if ((xcr0 & mask) != mask) + xcr0 &= ~XFEATURE_MASK_AVX512; + return xcr0; }
Be a good citizen and don't allow any of the supported AVX-512 xfeatures[1] to be set if they can't all be set. That way userspace or a guest doesn't fail if it attempts to set them in XCR0. [1] CPUID.(EAX=0DH,ECX=0):EAX.OPMASK[bit-5] CPUID.(EAX=0DH,ECX=0):EAX.ZMM_Hi256[bit-6] CPUID.(EAX=0DH,ECX=0):EAX.ZMM_Hi16_ZMM[bit-7] Suggested-by: Jim Mattson <jmattson@google.com> Signed-off-by: Aaron Lewis <aaronlewis@google.com> --- arch/x86/kvm/cpuid.c | 4 ++++ 1 file changed, 4 insertions(+)