]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
KVM: ppc: small cosmetic changes to Book E DTLB miss handler
authorHollis Blanchard <hollisb@us.ibm.com>
Sat, 3 Jan 2009 22:23:00 +0000 (16:23 -0600)
committerAvi Kivity <avi@redhat.com>
Tue, 24 Mar 2009 09:02:56 +0000 (11:02 +0200)
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/powerpc/kvm/booke.c

index 35485dd6927eef520632f727660a2d9499a3699f..d196ae6193034d9d7b4b74c0bdda6fd72e096704 100644 (file)
@@ -290,6 +290,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
                struct kvmppc_44x_tlbe *gtlbe;
                unsigned long eaddr = vcpu->arch.fault_dear;
                int gtlb_index;
+               gpa_t gpaddr;
                gfn_t gfn;
 
                /* Check the guest TLB. */
@@ -305,8 +306,8 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
                }
 
                gtlbe = &vcpu_44x->guest_tlb[gtlb_index];
-               vcpu->arch.paddr_accessed = tlb_xlate(gtlbe, eaddr);
-               gfn = vcpu->arch.paddr_accessed >> PAGE_SHIFT;
+               gpaddr = tlb_xlate(gtlbe, eaddr);
+               gfn = gpaddr >> PAGE_SHIFT;
 
                if (kvm_is_visible_gfn(vcpu->kvm, gfn)) {
                        /* The guest TLB had a mapping, but the shadow TLB
@@ -315,13 +316,14 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
                         * b) the guest used a large mapping which we're faking
                         * Either way, we need to satisfy the fault without
                         * invoking the guest. */
-                       kvmppc_mmu_map(vcpu, eaddr, vcpu->arch.paddr_accessed, gtlbe->tid,
+                       kvmppc_mmu_map(vcpu, eaddr, gpaddr, gtlbe->tid,
                                       gtlbe->word2, get_tlb_bytes(gtlbe), gtlb_index);
                        kvmppc_account_exit(vcpu, DTLB_VIRT_MISS_EXITS);
                        r = RESUME_GUEST;
                } else {
                        /* Guest has mapped and accessed a page which is not
                         * actually RAM. */
+                       vcpu->arch.paddr_accessed = gpaddr;
                        r = kvmppc_emulate_mmio(run, vcpu);
                        kvmppc_account_exit(vcpu, MMIO_EXITS);
                }