powerpc/kvm: Fix "PR" KVM implementation of H_CEDE

Submitted by Benjamin Herrenschmidt on July 10, 2012, 8:48 a.m.

Details

Message ID 1341910097.2561.19.camel@pasglop
State New
Headers show

Commit Message

Benjamin Herrenschmidt July 10, 2012, 8:48 a.m.
H_CEDE should enable the vcpu's MSR:EE bit. It does on "HV" KVM (it's
burried in the assembly code though) and as far as I can tell, qemu
does it as well.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

Alex, you probably want that in -now- (and maybe even in stable).

Without that, bad things happen in guests, especially after Linus pulls
what I'm about to send him to fix more issues with the way pseries
handles H_CEDE vs. lazy IRQ disabling (it will hang in PR KVM without
that fix).



--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch hide | download patch | download mbox

diff --git a/arch/powerpc/kvm/book3s_pr_papr.c b/arch/powerpc/kvm/book3s_pr_papr.c
index 3ff9013..ee02b30 100644
--- a/arch/powerpc/kvm/book3s_pr_papr.c
+++ b/arch/powerpc/kvm/book3s_pr_papr.c
@@ -241,6 +241,7 @@  int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd)
 	case H_PUT_TCE:
 		return kvmppc_h_pr_put_tce(vcpu);
 	case H_CEDE:
+		vcpu->arch.shared->msr |= MSR_EE;
 		kvm_vcpu_block(vcpu);
 		clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
 		vcpu->stat.halt_wakeup++;