summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Ebbert <cebbert@redhat.com>2011-05-20 22:38:50 -0400
committerChuck Ebbert <cebbert@redhat.com>2011-05-20 22:38:50 -0400
commited7f8ddc67aa800aa331a5e37177e05d876019bb (patch)
treefca1c06b9e6382cc12049580f563cdfee42796e9
parent22c40c590c624184d7570f64af1c46237d5f494d (diff)
downloadkernel-ed7f8ddc67aa800aa331a5e37177e05d876019bb.tar.gz
kernel-ed7f8ddc67aa800aa331a5e37177e05d876019bb.tar.xz
kernel-ed7f8ddc67aa800aa331a5e37177e05d876019bb.zip
Drop broken fix for stalls on AMD processors.
-rw-r--r--kernel.spec7
-rw-r--r--x86-amd-fix-another-erratum-400-bug.patch70
2 files changed, 3 insertions, 74 deletions
diff --git a/kernel.spec b/kernel.spec
index 0dc1ea7fd..a4b912b40 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -716,8 +716,6 @@ Patch12401: mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocati
Patch12402: mm-slub-do-not-take-expensive-steps-for-slubs-speculative-high-order-allocations.patch
Patch12403: mm-vmscan-if-kswapd-has-been-running-too-long-allow-it-to-sleep.patch
-Patch12500: x86-amd-fix-another-erratum-400-bug.patch
-
%endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1328,8 +1326,6 @@ ApplyPatch mm-slub-do-not-wake-kswapd-for-slubs-speculative-high-order-allocatio
ApplyPatch mm-slub-do-not-take-expensive-steps-for-slubs-speculative-high-order-allocations.patch
ApplyPatch mm-vmscan-if-kswapd-has-been-running-too-long-allow-it-to-sleep.patch
-ApplyPatch x86-amd-fix-another-erratum-400-bug.patch
-
# END OF PATCH APPLICATIONS
%endif
@@ -1938,6 +1934,9 @@ fi
# and build.
%changelog
+* Fri May 20 2011 Chuck Ebbert <cebbert@redhat.com>
+- Drop broken fix for stalls on AMD processors.
+
* Fri May 20 2011 Dave Jones <davej@redhat.com>
- Rebuild to fix versioning.
diff --git a/x86-amd-fix-another-erratum-400-bug.patch b/x86-amd-fix-another-erratum-400-bug.patch
deleted file mode 100644
index 4afc0af6d..000000000
--- a/x86-amd-fix-another-erratum-400-bug.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Fix a bug that causes CPU hangs due to missing timer interrupts,
-introduced by these three patches:
-
-(1) commit d78d671db478eb8b14c78501c0cee1cc7baf6967
- "x86, cpu: AMD errata checking framework"
-
-(2) commit 9d8888c2a214aece2494a49e699a097c2ba9498b
- "x86, cpu: Clean up AMD erratum 400 workaround"
-
-(3) commit b87cf80af3ba4b4c008b4face3c68d604e1715c6
- "x86, AMD: Set ARAT feature on AMD processors"
-
-Patch (1) introduced a new framework that allowed checking for errata
-using AMD's OSVW (OS visible workaround) feature combined with
-explicit lists of models. It checked OSVW first, and completely
-relied on that if it was present and usable.
-
-Patch (2) switched the checking for erratum 400 to use the new
-framework. But the original code checked for an explicit model range
-first, then used OSVW if the CPU was not within that range. Patch (2)
-also inexplicably added a second model range (for Family 10h) that
-was never in the original code.
-
-Then patch (3) used the new erratum 400 checks to decide whether
-to enable the ARAT feature (always running APIC timer.) However,
-this causes notebooks using the Sempron processor (Family 10h
-Model 6 Stepping 2) to enable ARAT when they shouldn't because the
-explicit check for that model gets skipped.
-
-The fix is to check the model list first, then use OSVW if the CPU
-is not in that list.
-
-Signed-off-by: Chuck Ebbert <cebbert@redhat.com>
-
---- a/arch/x86/kernel/cpu/amd.c
-+++ b/arch/x86/kernel/cpu/amd.c
-@@ -723,6 +723,17 @@ bool cpu_has_amd_erratum(const int *erra
- if (cpu->x86_vendor != X86_VENDOR_AMD)
- return false;
-
-+ /*
-+ * Must match family-model-stepping range first so that the
-+ * range checks will override OSVW checking.
-+ */
-+ 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)) &&
-+ (ms <= AMD_MODEL_RANGE_END(range)))
-+ return true;
-+
- if (osvw_id >= 0 && osvw_id < 65536 &&
- cpu_has(cpu, X86_FEATURE_OSVW)) {
- u64 osvw_len;
-@@ -737,15 +748,6 @@ bool cpu_has_amd_erratum(const int *erra
- }
- }
-
-- /* OSVW unavailable or ID unknown, match family-model-stepping range */
-- 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)) &&
-- (ms <= AMD_MODEL_RANGE_END(range)))
-- return true;
--
- return false;
- }
--
- EXPORT_SYMBOL_GPL(cpu_has_amd_erratum);