pvclock: Get rid of __pvclock_read_cycles in function pvclock_read_flags
authorMinfei Huang <mnghuan@gmail.com>
Sat, 28 May 2016 12:27:43 +0000 (20:27 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 27 Jun 2016 13:12:15 +0000 (15:12 +0200)
There is a generic function __pvclock_read_cycles to be used to get both
flags and cycles. For function pvclock_read_flags, it's useless to get
cycles value. To make this function be more effective, get this variable
flags directly in function.

Signed-off-by: Minfei Huang <mnghuan@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kernel/pvclock.c

index 7f82fe0a6807cc0be8d782f5a7e8d6a6e3384ab5..06c58ce46762ed9165cd3317292bbc57efa7055c 100644 (file)
@@ -61,11 +61,14 @@ void pvclock_resume(void)
 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);
+               version = src->version;
+               /* Make the latest version visible */
+               smp_rmb();
+
+               flags = src->flags;
                /* Make sure that the version double-check is last. */
                smp_rmb();
        } while ((src->version & 1) || version != src->version);