x86/CPU/AMD: Clear virtualized VMLOAD/VMSAVE on Zen4 client
authorMario Limonciello <mario.limonciello@amd.com>
Tue, 5 Nov 2024 16:02:34 +0000 (10:02 -0600)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 5 Nov 2024 16:48:32 +0000 (17:48 +0100)
A number of Zen4 client SoCs advertise the ability to use virtualized
VMLOAD/VMSAVE, but using these instructions is reported to be a cause
of a random host reboot.

These instructions aren't intended to be advertised on Zen4 client
so clear the capability.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Cc: stable@vger.kernel.org
Link: https://bugzilla.kernel.org/show_bug.cgi?id=219009
arch/x86/kernel/cpu/amd.c

index fab5caec0b72e485e8232406e0ddf7a889a74104..823f44f7bc94659b4cb46bf728780dc33ca2cdbe 100644 (file)
@@ -924,6 +924,17 @@ static void init_amd_zen4(struct cpuinfo_x86 *c)
 {
        if (!cpu_has(c, X86_FEATURE_HYPERVISOR))
                msr_set_bit(MSR_ZEN4_BP_CFG, MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT);
+
+       /*
+        * These Zen4 SoCs advertise support for virtualized VMLOAD/VMSAVE
+        * in some BIOS versions but they can lead to random host reboots.
+        */
+       switch (c->x86_model) {
+       case 0x18 ... 0x1f:
+       case 0x60 ... 0x7f:
+               clear_cpu_cap(c, X86_FEATURE_V_VMSAVE_VMLOAD);
+               break;
+       }
 }
 
 static void init_amd_zen5(struct cpuinfo_x86 *c)