|
@@ -615,6 +615,25 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
|
|
|
/* As a rule processors have APIC timer running in deep C states */
|
|
|
if (c->x86 >= 0xf && !cpu_has_amd_erratum(amd_erratum_400))
|
|
|
set_cpu_cap(c, X86_FEATURE_ARAT);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Disable GART TLB Walk Errors on Fam10h. We do this here
|
|
|
+ * because this is always needed when GART is enabled, even in a
|
|
|
+ * kernel which has no MCE support built in.
|
|
|
+ */
|
|
|
+ if (c->x86 == 0x10) {
|
|
|
+ /*
|
|
|
+ * BIOS should disable GartTlbWlk Errors themself. If
|
|
|
+ * it doesn't do it here as suggested by the BKDG.
|
|
|
+ *
|
|
|
+ * Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=33012
|
|
|
+ */
|
|
|
+ u64 mask;
|
|
|
+
|
|
|
+ rdmsrl(MSR_AMD64_MCx_MASK(4), mask);
|
|
|
+ mask |= (1 << 10);
|
|
|
+ wrmsrl(MSR_AMD64_MCx_MASK(4), mask);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_X86_32
|