From 525c652f0e88253f7baff24489498bf2eb1e7aef Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 20 Jul 2010 00:22:06 +0000 Subject: [PATCH] Revert "x86, paravirt: Add a global synchronization point for pvclock" (Closes: #588426) svn path=/dists/sid/linux-2.6/; revision=16001 --- debian/changelog | 2 + ...t-Add-a-global-synchronization-point.patch | 60 +++++++++++++++++++ debian/patches/series/18 | 1 + 3 files changed, 63 insertions(+) create mode 100644 debian/patches/debian/revert-x86-paravirt-Add-a-global-synchronization-point.patch diff --git a/debian/changelog b/debian/changelog index 00f645b7c..c145a181a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,8 @@ linux-2.6 (2.6.32-18) UNRELEASED; urgency=low does not implement the CMOV instruction * drm/i915: Add 'reclaimable' to i915 self-reclaimable page allocations (really closes: #534422, we hope) + * Revert "x86, paravirt: Add a global synchronization point for pvclock", + included in stable 2.6.32.16 (Closes: #588426) [ Martin Michlmayr ] * Add some patches from the Orion tree, including support for Marvell's diff --git a/debian/patches/debian/revert-x86-paravirt-Add-a-global-synchronization-point.patch b/debian/patches/debian/revert-x86-paravirt-Add-a-global-synchronization-point.patch new file mode 100644 index 000000000..ff3ffec4e --- /dev/null +++ b/debian/patches/debian/revert-x86-paravirt-Add-a-global-synchronization-point.patch @@ -0,0 +1,60 @@ +From 0524d9246e00d566c2037496e1eb9a1297876227 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Tue, 20 Jul 2010 01:15:53 +0100 +Subject: [PATCH] Revert "x86, paravirt: Add a global synchronization point for pvclock" + +This reverts commit 1345126c761f0360dc108973bf73281d51945bc1. +--- + arch/x86/kernel/pvclock.c | 24 ------------------------ + 1 files changed, 0 insertions(+), 24 deletions(-) + +diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c +index dfdfe46..03801f2 100644 +--- a/arch/x86/kernel/pvclock.c ++++ b/arch/x86/kernel/pvclock.c +@@ -109,14 +109,11 @@ unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src) + return pv_tsc_khz; + } + +-static atomic64_t last_value = ATOMIC64_INIT(0); +- + cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) + { + struct pvclock_shadow_time shadow; + unsigned version; + cycle_t ret, offset; +- u64 last; + + do { + version = pvclock_get_time_values(&shadow, src); +@@ -126,27 +123,6 @@ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) + barrier(); + } while (version != src->version); + +- /* +- * Assumption here is that last_value, a global accumulator, always goes +- * forward. If we are less than that, we should not be much smaller. +- * We assume there is an error marging we're inside, and then the correction +- * does not sacrifice accuracy. +- * +- * For reads: global may have changed between test and return, +- * but this means someone else updated poked the clock at a later time. +- * We just need to make sure we are not seeing a backwards event. +- * +- * For updates: last_value = ret is not enough, since two vcpus could be +- * updating at the same time, and one of them could be slightly behind, +- * making the assumption that last_value always go forward fail to hold. +- */ +- last = atomic64_read(&last_value); +- do { +- if (ret < last) +- return last; +- last = atomic64_cmpxchg(&last_value, last, ret); +- } while (unlikely(last != ret)); +- + return ret; + } + +-- +1.7.1 + diff --git a/debian/patches/series/18 b/debian/patches/series/18 index 00ac9ffce..548ce7b4c 100644 --- a/debian/patches/series/18 +++ b/debian/patches/series/18 @@ -66,3 +66,4 @@ X features/all/rt28x0/remove-rt3090-driver.commands + bugfix/all/inotify-fix-inotify-oneshot-support.patch + bugfix/all/inotify-send-IN_UNMOUNT-events.patch + bugfix/all/sched-fix-over-scheduling-bug.patch ++ debian/revert-x86-paravirt-Add-a-global-synchronization-point.patch