From 01139a7b12bfd0d1a3ac873d76e8e8f4baabe61f Mon Sep 17 00:00:00 2001 From: Marcelo Tosatti Date: Tue, 27 Nov 2012 23:28:52 -0200 Subject: [PATCH] --- yaml --- r: 343535 b: refs/heads/master c: 2697902be89d7f38e9736dfe946cd0e5d4f47b80 h: refs/heads/master i: 343533: d47c833c54c7cf85ee98d2b92ebde6006be8fc91 343531: 436b4ba5333672570a965a0e9b5a4d90f6d92d6d 343527: 96f540beda7f030cc731735fa5d516db3d522721 343519: bf793749d72b98a206ecf806285933f0eec001c1 v: v3 --- [refs] | 2 +- trunk/arch/x86/include/asm/pvclock.h | 1 + trunk/arch/x86/kernel/pvclock.c | 13 +++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index fd7f356d8780..fbc4cd8035da 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dce2db0a35197e2f4421245079f19ab753e97348 +refs/heads/master: 2697902be89d7f38e9736dfe946cd0e5d4f47b80 diff --git a/trunk/arch/x86/include/asm/pvclock.h b/trunk/arch/x86/include/asm/pvclock.h index 47e25d464104..ea27a8dd189c 100644 --- a/trunk/arch/x86/include/asm/pvclock.h +++ b/trunk/arch/x86/include/asm/pvclock.h @@ -6,6 +6,7 @@ /* some helper functions for xen and kvm pv clock sources */ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src); +u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src); void pvclock_set_flags(u8 flags); unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src); void pvclock_read_wallclock(struct pvclock_wall_clock *wall, diff --git a/trunk/arch/x86/kernel/pvclock.c b/trunk/arch/x86/kernel/pvclock.c index a7d90910c61a..c8fb043a8695 100644 --- a/trunk/arch/x86/kernel/pvclock.c +++ b/trunk/arch/x86/kernel/pvclock.c @@ -45,6 +45,19 @@ void pvclock_resume(void) atomic64_set(&last_value, 0); } +u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src) +{ + unsigned version; + cycle_t ret; + u8 flags; + + do { + version = __pvclock_read_cycles(src, &ret, &flags); + } while ((src->version & 1) || version != src->version); + + return flags & valid_flags; +} + cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) { unsigned version;