summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm/emulate.c
diff options
context:
space:
mode:
authorLiu Yu2010-02-02 12:44:35 +0100
committerMarcelo Tosatti2010-03-01 16:36:10 +0100
commitdaf5e27109c8c16c987e955cc6abbbc0af050edd (patch)
tree70456cce995c63895d50d921e6e0c36a9678de19 /arch/powerpc/kvm/emulate.c
parentKVM: ia64: destroy ioapic device if fail to setup default irq routing (diff)
downloadkernel-qcow2-linux-daf5e27109c8c16c987e955cc6abbbc0af050edd.tar.gz
kernel-qcow2-linux-daf5e27109c8c16c987e955cc6abbbc0af050edd.tar.xz
kernel-qcow2-linux-daf5e27109c8c16c987e955cc6abbbc0af050edd.zip
KVM: ppc/booke: Set ESR and DEAR when inject interrupt to guest
Old method prematurely sets ESR and DEAR. Move this part after we decide to inject interrupt, which is more like hardware behave. Signed-off-by: Liu Yu <yu.liu@freescale.com> Acked-by: Hollis Blanchard <hollis@penguinppc.org> Acked-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm/emulate.c')
-rw-r--r--arch/powerpc/kvm/emulate.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c
index b905623735bd..cb72a65f4ecc 100644
--- a/arch/powerpc/kvm/emulate.c
+++ b/arch/powerpc/kvm/emulate.c
@@ -151,10 +151,10 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu)
case OP_TRAP:
#ifdef CONFIG_PPC64
case OP_TRAP_64:
+ kvmppc_core_queue_program(vcpu, SRR1_PROGTRAP);
#else
- vcpu->arch.esr |= ESR_PTR;
+ kvmppc_core_queue_program(vcpu, vcpu->arch.esr | ESR_PTR);
#endif
- kvmppc_core_queue_program(vcpu, SRR1_PROGTRAP);
advance = 0;
break;