x86/paravirt: Change vcp_is_preempted() arg type to long
authorWaiman Long <longman@redhat.com>
Mon, 20 Feb 2017 18:36:03 +0000 (13:36 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 21 Feb 2017 11:48:06 +0000 (12:48 +0100)
The cpu argument in the function prototype of vcpu_is_preempted()
is changed from int to long. That makes it easier to provide a better
optimized assembly version of that function.

For Xen, vcpu_is_preempted(long) calls xen_vcpu_stolen(int), the
downcast from long to int is not a problem as vCPU number won't exceed
32 bits.

Signed-off-by: Waiman Long <longman@redhat.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/paravirt.h
arch/x86/include/asm/qspinlock.h
arch/x86/kernel/kvm.c
arch/x86/kernel/paravirt-spinlocks.c

index 1eea6ca..f75fbfe 100644 (file)
@@ -673,7 +673,7 @@ static __always_inline void pv_kick(int cpu)
        PVOP_VCALL1(pv_lock_ops.kick, cpu);
 }
 
-static __always_inline bool pv_vcpu_is_preempted(int cpu)
+static __always_inline bool pv_vcpu_is_preempted(long cpu)
 {
        return PVOP_CALLEE1(bool, pv_lock_ops.vcpu_is_preempted, cpu);
 }
index c343ab5..48a706f 100644 (file)
@@ -34,7 +34,7 @@ static inline void queued_spin_unlock(struct qspinlock *lock)
 }
 
 #define vcpu_is_preempted vcpu_is_preempted
-static inline bool vcpu_is_preempted(int cpu)
+static inline bool vcpu_is_preempted(long cpu)
 {
        return pv_vcpu_is_preempted(cpu);
 }
index 36bc664..334173d 100644 (file)
@@ -589,7 +589,7 @@ out:
        local_irq_restore(flags);
 }
 
-__visible bool __kvm_vcpu_is_preempted(int cpu)
+__visible bool __kvm_vcpu_is_preempted(long cpu)
 {
        struct kvm_steal_time *src = &per_cpu(steal_time, cpu);
 
index 6d4bf81..8caa8a1 100644 (file)
@@ -20,7 +20,7 @@ bool pv_is_native_spin_unlock(void)
                __raw_callee_save___native_queued_spin_unlock;
 }
 
-__visible bool __native_vcpu_is_preempted(int cpu)
+__visible bool __native_vcpu_is_preempted(long cpu)
 {
        return false;
 }