KVM: PPC: Book3S HV: Fix H_PROD to actually wake the target vcpu
authorPaul Mackerras <paulus@ozlabs.org>
Tue, 6 Dec 2016 09:42:05 +0000 (20:42 +1100)
committerPaul Mackerras <paulus@ozlabs.org>
Fri, 27 Jan 2017 09:23:13 +0000 (20:23 +1100)
commit8464c8842de2249061d3c5abc2ccce1bbbd10e7a
treeb807437a416e965674739bf3987f4c35d2cf01e6
parent21acd0e4df04f02176e773468658c3cebff096bb
KVM: PPC: Book3S HV: Fix H_PROD to actually wake the target vcpu

The H_PROD hypercall is supposed to wake up an idle vcpu.  We have
an implementation, but because Linux doesn't use it except when
doing cpu hotplug, it was never tested properly.  AIX does use it,
and reported it broken.  It turns out we were waking the wrong
vcpu (the one doing H_PROD, not the target of the prod) and we
weren't handling the case where the target needs an IPI to wake
it.  Fix it by using the existing kvmppc_fast_vcpu_kick_hv()
function, which is intended for this kind of thing, and by using
the target vcpu not the current vcpu.

We were also not looking at the prodded flag when checking whether a
ceded vcpu should wake up, so this adds checks for the prodded flag
alongside the checks for pending exceptions.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
arch/powerpc/kvm/book3s_hv.c