]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
KVM: PPC: 44x: fix DCR read/write
authorAlexander Graf <agraf@suse.de>
Sat, 6 Oct 2012 01:56:35 +0000 (03:56 +0200)
committerAlexander Graf <agraf@suse.de>
Tue, 30 Oct 2012 09:54:50 +0000 (10:54 +0100)
When remembering the direction of a DCR transaction, we should write
to the same variable that we interpret on later when doing vcpu_run
again.

Signed-off-by: Alexander Graf <agraf@suse.de>
Cc: stable@vger.kernel.org
arch/powerpc/kvm/44x_emulate.c

index 1a793c4c4a6793cfa8880b7064611e8958856c05..35ec0a8547dabb86977f0e24657f8ba710cd4f69 100644 (file)
@@ -46,6 +46,7 @@ static int emulate_mtdcr(struct kvm_vcpu *vcpu, int rs, int dcrn)
                vcpu->run->dcr.dcrn = dcrn;
                vcpu->run->dcr.data = kvmppc_get_gpr(vcpu, rs);
                vcpu->run->dcr.is_write = 1;
+               vcpu->arch.dcr_is_write = 1;
                vcpu->arch.dcr_needed = 1;
                kvmppc_account_exit(vcpu, DCR_EXITS);
                return EMULATE_DO_DCR;
@@ -80,6 +81,7 @@ static int emulate_mfdcr(struct kvm_vcpu *vcpu, int rt, int dcrn)
                vcpu->run->dcr.dcrn = dcrn;
                vcpu->run->dcr.data =  0;
                vcpu->run->dcr.is_write = 0;
+               vcpu->arch.dcr_is_write = 0;
                vcpu->arch.io_gpr = rt;
                vcpu->arch.dcr_needed = 1;
                kvmppc_account_exit(vcpu, DCR_EXITS);