Skip to content

Commit f454b18

Browse files
committed
x86/cpu: Fix AMD erratum #1485 on Zen4-based CPUs
Fix erratum #1485 on Zen4 parts where running with STIBP disabled can cause an #UD exception. The performance impact of the fix is negligible. Reported-by: René Rebe <rene@exactcode.de> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Tested-by: René Rebe <rene@exactcode.de> Cc: <stable@kernel.org> Link: https://lore.kernel.org/r/D99589F4-BC5D-430B-87B2-72C20370CF57@exactcode.com
1 parent 025d5ac commit f454b18

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

arch/x86/include/asm/msr-index.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,12 +637,17 @@
637637
/* AMD Last Branch Record MSRs */
638638
#define MSR_AMD64_LBR_SELECT 0xc000010e
639639

640-
/* Fam 17h MSRs */
641-
#define MSR_F17H_IRPERF 0xc00000e9
640+
/* Zen4 */
641+
#define MSR_ZEN4_BP_CFG 0xc001102e
642+
#define MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT 5
642643

644+
/* Zen 2 */
643645
#define MSR_ZEN2_SPECTRAL_CHICKEN 0xc00110e3
644646
#define MSR_ZEN2_SPECTRAL_CHICKEN_BIT BIT_ULL(1)
645647

648+
/* Fam 17h MSRs */
649+
#define MSR_F17H_IRPERF 0xc00000e9
650+
646651
/* Fam 16h MSRs */
647652
#define MSR_F16H_L2I_PERF_CTL 0xc0010230
648653
#define MSR_F16H_L2I_PERF_CTR 0xc0010231

arch/x86/kernel/cpu/amd.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ static const int amd_div0[] =
8080
AMD_LEGACY_ERRATUM(AMD_MODEL_RANGE(0x17, 0x00, 0x0, 0x2f, 0xf),
8181
AMD_MODEL_RANGE(0x17, 0x50, 0x0, 0x5f, 0xf));
8282

83+
static const int amd_erratum_1485[] =
84+
AMD_LEGACY_ERRATUM(AMD_MODEL_RANGE(0x19, 0x10, 0x0, 0x1f, 0xf),
85+
AMD_MODEL_RANGE(0x19, 0x60, 0x0, 0xaf, 0xf));
86+
8387
static bool cpu_has_amd_erratum(struct cpuinfo_x86 *cpu, const int *erratum)
8488
{
8589
int osvw_id = *erratum++;
@@ -1149,6 +1153,10 @@ static void init_amd(struct cpuinfo_x86 *c)
11491153
pr_notice_once("AMD Zen1 DIV0 bug detected. Disable SMT for full protection.\n");
11501154
setup_force_cpu_bug(X86_BUG_DIV0);
11511155
}
1156+
1157+
if (!cpu_has(c, X86_FEATURE_HYPERVISOR) &&
1158+
cpu_has_amd_erratum(c, amd_erratum_1485))
1159+
msr_set_bit(MSR_ZEN4_BP_CFG, MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT);
11521160
}
11531161

11541162
#ifdef CONFIG_X86_32

0 commit comments

Comments
 (0)