[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20110330210555.CAAD03E1A05@tassilo.jf.intel.com>
Date: Wed, 30 Mar 2011 14:05:55 -0700 (PDT)
From: Andi Kleen <andi@...stfloor.org>
To: jeremy.fitzhardinge@...rix.com, mingo@...e.hu, gregkh@...e.de,
ak@...ux.intel.com, linux-kernel@...r.kernel.org,
stable@...nel.org, tim.bird@...sony.com
Subject: [PATCH] [116/275] x86/pvclock: Zero last_value on resume
2.6.35-longterm review patch. If anyone has any objections, please let me know.
------------------
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>
commit e7a3481c0246c8e45e79c629efd63b168e91fcda upstream.
If the guest domain has been suspend/resumed or migrated, then the
system clock backing the pvclock clocksource may revert to a smaller
value (ie, can be non-monotonic across the migration/save-restore).
Make sure we zero last_value in that case so that the domain
continues to see clock updates.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>
Signed-off-by: Ingo Molnar <mingo@...e.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@...e.de>
Signed-off-by: Andi Kleen <ak@...ux.intel.com>
---
arch/x86/include/asm/pvclock.h | 1 +
arch/x86/kernel/pvclock.c | 5 +++++
arch/x86/xen/time.c | 2 ++
3 files changed, 8 insertions(+)
Index: linux-2.6.35.y/arch/x86/include/asm/pvclock.h
===================================================================
--- linux-2.6.35.y.orig/arch/x86/include/asm/pvclock.h 2011-03-29 22:51:22.108157477 -0700
+++ linux-2.6.35.y/arch/x86/include/asm/pvclock.h 2011-03-29 23:03:00.598284861 -0700
@@ -11,5 +11,6 @@
void pvclock_read_wallclock(struct pvclock_wall_clock *wall,
struct pvclock_vcpu_time_info *vcpu,
struct timespec *ts);
+void pvclock_resume(void);
#endif /* _ASM_X86_PVCLOCK_H */
Index: linux-2.6.35.y/arch/x86/kernel/pvclock.c
===================================================================
--- linux-2.6.35.y.orig/arch/x86/kernel/pvclock.c 2011-03-29 22:51:22.108157477 -0700
+++ linux-2.6.35.y/arch/x86/kernel/pvclock.c 2011-03-29 23:03:00.598284861 -0700
@@ -120,6 +120,11 @@
static atomic64_t last_value = ATOMIC64_INIT(0);
+void pvclock_resume(void)
+{
+ atomic64_set(&last_value, 0);
+}
+
cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src)
{
struct pvclock_shadow_time shadow;
Index: linux-2.6.35.y/arch/x86/xen/time.c
===================================================================
--- linux-2.6.35.y.orig/arch/x86/xen/time.c 2011-03-29 22:51:22.109157451 -0700
+++ linux-2.6.35.y/arch/x86/xen/time.c 2011-03-29 23:03:00.629284080 -0700
@@ -425,6 +425,8 @@
{
int cpu;
+ pvclock_resume();
+
if (xen_clockevent != &xen_vcpuop_clockevent)
return;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists