diff options
Diffstat (limited to 'arch/x86/kernel/cpu/amd.c')
| -rw-r--r-- | arch/x86/kernel/cpu/amd.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 380753b14cab..95cdd08c4cbb 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -880,6 +880,15 @@ void init_spectral_chicken(struct cpuinfo_x86 *c)  		}  	}  #endif +	/* +	 * Work around Erratum 1386.  The XSAVES instruction malfunctions in +	 * certain circumstances on Zen1/2 uarch, and not all parts have had +	 * updated microcode at the time of writing (March 2023). +	 * +	 * Affected parts all have no supervisor XSAVE states, meaning that +	 * the XSAVEC instruction (which works fine) is equivalent. +	 */ +	clear_cpu_cap(c, X86_FEATURE_XSAVES);  }  static void init_amd_zn(struct cpuinfo_x86 *c)  |