From: Raghavendra K T <raghavendra...@linux.vnet.ibm.com>

Also we do not update last boosted vcpu in failure cases.

Reviewed-by: Srikar Dronamraju <sri...@linux.vnet.ibm.com>
Signed-off-by: Raghavendra K T <raghavendra...@linux.vnet.ibm.com>
---

 virt/kvm/kvm_main.c |   21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index be70035..e376434 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -1639,6 +1639,7 @@ bool kvm_vcpu_yield_to(struct kvm_vcpu *target)
 {
        struct pid *pid;
        struct task_struct *task = NULL;
+       bool ret = false;
 
        rcu_read_lock();
        pid = rcu_dereference(target->pid);
@@ -1646,17 +1647,15 @@ bool kvm_vcpu_yield_to(struct kvm_vcpu *target)
                task = get_pid_task(target->pid, PIDTYPE_PID);
        rcu_read_unlock();
        if (!task)
-               return false;
+               return ret;
        if (task->flags & PF_VCPU) {
                put_task_struct(task);
-               return false;
-       }
-       if (yield_to(task, 1)) {
-               put_task_struct(task);
-               return true;
+               return ret;
        }
+       ret = yield_to(task, 1);
        put_task_struct(task);
-       return false;
+
+       return ret;
 }
 EXPORT_SYMBOL_GPL(kvm_vcpu_yield_to);
 
@@ -1697,6 +1696,7 @@ bool kvm_vcpu_eligible_for_directed_yield(struct kvm_vcpu 
*vcpu)
        return eligible;
 }
 #endif
+
 void kvm_vcpu_on_spin(struct kvm_vcpu *me)
 {
        struct kvm *kvm = me->kvm;
@@ -1727,11 +1727,12 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me)
                                continue;
                        if (!kvm_vcpu_eligible_for_directed_yield(vcpu))
                                continue;
-                       if (kvm_vcpu_yield_to(vcpu)) {
+
+                       yielded = kvm_vcpu_yield_to(vcpu);
+                       if (yielded > 0)
                                kvm->last_boosted_vcpu = i;
-                               yielded = 1;
+                       if (yielded)
                                break;
-                       }
                }
        }
        kvm_vcpu_set_in_spin_loop(me, false);

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to