summaryrefslogtreecommitdiffstats
path: root/x86-cpu-fix-regression-in-amd-errata-checking-code.patch
diff options
context:
space:
mode:
authorChuck Ebbert <cebbert@redhat.com>2010-08-18 20:07:01 -0400
committerChuck Ebbert <cebbert@redhat.com>2010-08-18 20:31:09 -0400
commit9b003c30efddde58d39ca798eb9137043244fd2c (patch)
tree4ef1c07295e0c2ca361d4d26f0d66f714afd8593 /x86-cpu-fix-regression-in-amd-errata-checking-code.patch
parent95f99faff4642ad24b9f62227cbb96cfc4576038 (diff)
downloadkernel-9b003c30efddde58d39ca798eb9137043244fd2c.tar.gz
kernel-9b003c30efddde58d39ca798eb9137043244fd2c.tar.xz
kernel-9b003c30efddde58d39ca798eb9137043244fd2c.zip
Fix hangs on boot with some AMD processors
(x86-cpu-fix-regression-in-amd-errata-checking-code.patch) Drop unused ssb_check_for_sprom.patch
Diffstat (limited to 'x86-cpu-fix-regression-in-amd-errata-checking-code.patch')
-rw-r--r--x86-cpu-fix-regression-in-amd-errata-checking-code.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/x86-cpu-fix-regression-in-amd-errata-checking-code.patch b/x86-cpu-fix-regression-in-amd-errata-checking-code.patch
new file mode 100644
index 00000000..dc1f391f
--- /dev/null
+++ b/x86-cpu-fix-regression-in-amd-errata-checking-code.patch
@@ -0,0 +1,29 @@
+From: Hans Rosenfeld <hans.rosenfeld@amd.com>
+Date: Wed, 18 Aug 2010 14:19:50 +0000 (+0200)
+Subject: x86, cpu: Fix regression in AMD errata checking code
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fmingo%2Flinux-2.6-x86.git;a=commitdiff_plain;h=07a7795ca2e6e66d00b184efb46bd0e23d90d3fe
+
+x86, cpu: Fix regression in AMD errata checking code
+
+A bug in the family-model-stepping matching code caused the presence of
+errata to go undetected when OSVW was not used. This causes hangs on
+some K8 systems because the E400 workaround is not enabled.
+
+Signed-off-by: Hans Rosenfeld <hans.rosenfeld@amd.com>
+LKML-Reference: <1282141190-930137-1-git-send-email-hans.rosenfeld@amd.com>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+---
+
+diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
+index 60a57b1..ba5f62f 100644
+--- a/arch/x86/kernel/cpu/amd.c
++++ b/arch/x86/kernel/cpu/amd.c
+@@ -669,7 +669,7 @@ bool cpu_has_amd_erratum(const int *erratum)
+ }
+
+ /* OSVW unavailable or ID unknown, match family-model-stepping range */
+- ms = (cpu->x86_model << 8) | cpu->x86_mask;
++ ms = (cpu->x86_model << 4) | cpu->x86_mask;
+ while ((range = *erratum++))
+ if ((cpu->x86 == AMD_MODEL_RANGE_FAMILY(range)) &&
+ (ms >= AMD_MODEL_RANGE_START(range)) &&