]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/CPU: Fix FPDSS on Zen1
authorBorislav Petkov (AMD) <bp@alien8.de>
Tue, 7 Apr 2026 09:40:03 +0000 (11:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 18 Apr 2026 08:46:48 +0000 (10:46 +0200)
commit e55d98e7756135f32150b9b8f75d580d0d4b2dd3 upstream.

Zen1's hardware divider can leave, under certain circumstances, partial
results from previous operations.  Those results can be leaked by
another, attacker thread.

Fix that with a chicken bit.

Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/include/asm/msr-index.h
arch/x86/kernel/cpu/amd.c

index d1b11b4c40d28b78a4c7a64a802dbb1f0da73727..75d2218cd0328c87efd9f102a8be050530ff716c 100644 (file)
 #define MSR_AMD64_DC_CFG               0xc0011022
 #define MSR_AMD64_TW_CFG               0xc0011023
 
+#define MSR_AMD64_FP_CFG               0xc0011028
+#define MSR_AMD64_FP_CFG_ZEN1_DENORM_FIX_BIT   9
+
 #define MSR_AMD64_DE_CFG               0xc0011029
 #define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT   1
 #define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE      BIT_ULL(MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT)
index 86059f2c0fcd45c0405e7f623d86769c4c90f79f..b3499c84d89dd816c8aab65960cb093e434ab44b 100644 (file)
@@ -949,6 +949,9 @@ static void init_amd_zen1(struct cpuinfo_x86 *c)
                msr_clear_bit(MSR_K7_HWCR, MSR_K7_HWCR_IRPERF_EN_BIT);
                clear_cpu_cap(c, X86_FEATURE_IRPERF);
        }
+
+       pr_notice_once("AMD Zen1 FPDSS bug detected, enabling mitigation.\n");
+       msr_set_bit(MSR_AMD64_FP_CFG, MSR_AMD64_FP_CFG_ZEN1_DENORM_FIX_BIT);
 }
 
 static const struct x86_cpu_id amd_zenbleed_microcode[] = {