]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/cpufeatures: Fix dependencies for GFNI, VAES, and VPCLMULQDQ
authorEric Biggers <ebiggers@google.com>
Wed, 17 Apr 2024 06:04:34 +0000 (23:04 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 27 Apr 2024 15:07:13 +0000 (17:07 +0200)
[ Upstream commit 9543f6e26634537997b6e909c20911b7bf4876de ]

Fix cpuid_deps[] to list the correct dependencies for GFNI, VAES, and
VPCLMULQDQ.  These features don't depend on AVX512, and there exist CPUs
that support these features but not AVX512.  GFNI actually doesn't even
depend on AVX.

This prevents GFNI from being unnecessarily disabled if AVX is disabled
to mitigate the GDS vulnerability.

This also prevents all three features from being unnecessarily disabled
if AVX512VL (or its dependency AVX512F) were to be disabled, but it
looks like there isn't any case where this happens anyway.

Fixes: c128dbfa0f87 ("x86/cpufeatures: Enable new SSE/AVX/AVX512 CPU features")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://lore.kernel.org/r/20240417060434.47101-1-ebiggers@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/kernel/cpu/cpuid-deps.c

index c881bcafba7d702fce65f36c178c3f4a84aa98e9..9c19f40b1b2720a2818c57a9921ec01664e9d86f 100644 (file)
@@ -44,7 +44,10 @@ static const struct cpuid_dep cpuid_deps[] = {
        { X86_FEATURE_F16C,                     X86_FEATURE_XMM2,     },
        { X86_FEATURE_AES,                      X86_FEATURE_XMM2      },
        { X86_FEATURE_SHA_NI,                   X86_FEATURE_XMM2      },
+       { X86_FEATURE_GFNI,                     X86_FEATURE_XMM2      },
        { X86_FEATURE_FMA,                      X86_FEATURE_AVX       },
+       { X86_FEATURE_VAES,                     X86_FEATURE_AVX       },
+       { X86_FEATURE_VPCLMULQDQ,               X86_FEATURE_AVX       },
        { X86_FEATURE_AVX2,                     X86_FEATURE_AVX,      },
        { X86_FEATURE_AVX512F,                  X86_FEATURE_AVX,      },
        { X86_FEATURE_AVX512IFMA,               X86_FEATURE_AVX512F   },
@@ -56,9 +59,6 @@ static const struct cpuid_dep cpuid_deps[] = {
        { X86_FEATURE_AVX512VL,                 X86_FEATURE_AVX512F   },
        { X86_FEATURE_AVX512VBMI,               X86_FEATURE_AVX512F   },
        { X86_FEATURE_AVX512_VBMI2,             X86_FEATURE_AVX512VL  },
-       { X86_FEATURE_GFNI,                     X86_FEATURE_AVX512VL  },
-       { X86_FEATURE_VAES,                     X86_FEATURE_AVX512VL  },
-       { X86_FEATURE_VPCLMULQDQ,               X86_FEATURE_AVX512VL  },
        { X86_FEATURE_AVX512_VNNI,              X86_FEATURE_AVX512VL  },
        { X86_FEATURE_AVX512_BITALG,            X86_FEATURE_AVX512VL  },
        { X86_FEATURE_AVX512_4VNNIW,            X86_FEATURE_AVX512F   },