From 3b4ec2f06b8ed26c5fd6cd2ef7783b17744e4fe5 Mon Sep 17 00:00:00 2001 From: Gui Jianfeng Date: Fri, 16 Apr 2010 17:16:40 +0800 Subject: [PATCH] --- yaml --- r: 197759 b: refs/heads/master c: 51fb60d81b483ae75614d401e7d4271884894113 h: refs/heads/master i: 197757: 4866e47d49eb049044f16fd2aeaa0ddabd658aa9 197755: f5bfdf91727e30ad63942c6eb3392a9df7f829a0 197751: 8a859cd760c1ec97bfb21374fc5fc5f27318be56 197743: f3c80221b4b353419019b9687f6a55673e94c101 197727: 6a5cbd8bde78c65890c826e936067ea29be61660 197695: f4490653fc46965b341adc0b09cd3ddba5abed88 197631: 25ce0b3385453dfd886b175dd38f1829ad7835f2 v: v3 --- [refs] | 2 +- trunk/arch/x86/kvm/paging_tmpl.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 3fd2f01a53ca..32a5f6304b0f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 66cbff59a16017234ea6c80ecddfc17b27a83504 +refs/heads/master: 51fb60d81b483ae75614d401e7d4271884894113 diff --git a/trunk/arch/x86/kvm/paging_tmpl.h b/trunk/arch/x86/kvm/paging_tmpl.h index d9dea288e51d..5910557b3f33 100644 --- a/trunk/arch/x86/kvm/paging_tmpl.h +++ b/trunk/arch/x86/kvm/paging_tmpl.h @@ -572,12 +572,15 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp) { int i, offset, nr_present; bool reset_host_protection; + gpa_t first_pte_gpa; offset = nr_present = 0; if (PTTYPE == 32) offset = sp->role.quadrant << PT64_LEVEL_BITS; + first_pte_gpa = gfn_to_gpa(sp->gfn) + offset * sizeof(pt_element_t); + for (i = 0; i < PT64_ENT_PER_PAGE; i++) { unsigned pte_access; pt_element_t gpte; @@ -587,8 +590,7 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp) if (!is_shadow_present_pte(sp->spt[i])) continue; - pte_gpa = gfn_to_gpa(sp->gfn); - pte_gpa += (i+offset) * sizeof(pt_element_t); + pte_gpa = first_pte_gpa + i * sizeof(pt_element_t); if (kvm_read_guest_atomic(vcpu->kvm, pte_gpa, &gpte, sizeof(pt_element_t)))