diff options
author | Alexander Graf <agraf@suse.de> | 2010-02-19 05:00:31 -0500 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-04-25 05:34:47 -0400 |
commit | 37f5bca64e206ed97e53f734d7de5b7c5ade3578 (patch) | |
tree | fb5fd1922a9e4c7ae6700a0605a47e7a35f53cfb /arch/powerpc/kvm/book3s.c | |
parent | 3587d5348ced089666c51411bd9d771fb0b072cf (diff) |
KVM: PPC: Add AGAIN type for emulation return
Emulation of an instruction can have different outcomes. It can succeed,
fail, require MMIO, do funky BookE stuff - or it can just realize something's
odd and will be fixed the next time around.
Exactly that is what EMULATE_AGAIN means. Using that flag we can now tell
the caller that nothing happened, but we still want to go back to the
guest and see what happens next time we come around.
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm/book3s.c')
-rw-r--r-- | arch/powerpc/kvm/book3s.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index 604af29b71ed..6416f227d345 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c | |||
@@ -789,6 +789,9 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu, | |||
789 | case EMULATE_DONE: | 789 | case EMULATE_DONE: |
790 | r = RESUME_GUEST_NV; | 790 | r = RESUME_GUEST_NV; |
791 | break; | 791 | break; |
792 | case EMULATE_AGAIN: | ||
793 | r = RESUME_GUEST; | ||
794 | break; | ||
792 | case EMULATE_FAIL: | 795 | case EMULATE_FAIL: |
793 | printk(KERN_CRIT "%s: emulation at %lx failed (%08x)\n", | 796 | printk(KERN_CRIT "%s: emulation at %lx failed (%08x)\n", |
794 | __func__, vcpu->arch.pc, vcpu->arch.last_inst); | 797 | __func__, vcpu->arch.pc, vcpu->arch.last_inst); |