KVM: extend EMULATE_EXIT_USER to support different exit reasons
authorBharat Bhushan <bharat.bhushan@freescale.com>
Mon, 8 Apr 2013 00:32:14 +0000 (00:32 +0000)
committerAlexander Graf <agraf@suse.de>
Fri, 26 Apr 2013 18:27:03 +0000 (20:27 +0200)
Currently the instruction emulator code returns EMULATE_EXIT_USER
and common code initializes the "run->exit_reason = .." and
"vcpu->arch.hcall_needed = .." with one fixed reason.
But there can be different reasons when emulator need to exit
to user space. To support that the "run->exit_reason = .."
and "vcpu->arch.hcall_needed = .." initialization is moved a
level up to emulator.

Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/kvm/book3s_emulate.c
arch/powerpc/kvm/book3s_pr.c

index cdd19d64e354a7062dbb31a55baa7b3f0605650e..1f6344c4408d6deba440fefab77829486f424d6c 100644 (file)
@@ -194,6 +194,8 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
                                run->papr_hcall.args[i] = gpr;
                        }
 
+                       run->exit_reason = KVM_EXIT_PAPR_HCALL;
+                       vcpu->arch.hcall_needed = 1;
                        emulated = EMULATE_EXIT_USER;
                        break;
                }
index b960faf990bf84b4f15985f7e3c0df0eb36a5eb9..c1cffa882a69c911c6adbf9d000d3df2dc180088 100644 (file)
@@ -763,8 +763,6 @@ program_interrupt:
                        r = RESUME_HOST_NV;
                        break;
                case EMULATE_EXIT_USER:
-                       run->exit_reason = KVM_EXIT_PAPR_HCALL;
-                       vcpu->arch.hcall_needed = 1;
                        r = RESUME_HOST_NV;
                        break;
                default: