KVM: MMU: Use __gfn_to_rmap() to clean up kvm_handle_hva()
authorTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Mon, 2 Jul 2012 08:53:25 +0000 (17:53 +0900)
committerMarcelo Tosatti <mtosatti@redhat.com>
Wed, 18 Jul 2012 19:55:03 +0000 (16:55 -0300)
We can treat every level uniformly.

Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/mmu.c

index 28c8fbc..2beb95b 100644 (file)
@@ -1281,14 +1281,14 @@ static int kvm_handle_hva(struct kvm *kvm, unsigned long hva,
                        gfn_t gfn_offset = (hva - start) >> PAGE_SHIFT;
                        gfn_t gfn = memslot->base_gfn + gfn_offset;
 
-                       ret = handler(kvm, &memslot->rmap[gfn_offset], data);
+                       ret = 0;
 
-                       for (j = 0; j < KVM_NR_PAGE_SIZES - 1; ++j) {
-                               struct kvm_lpage_info *linfo;
+                       for (j = PT_PAGE_TABLE_LEVEL;
+                            j < PT_PAGE_TABLE_LEVEL + KVM_NR_PAGE_SIZES; ++j) {
+                               unsigned long *rmapp;
 
-                               linfo = lpage_info_slot(gfn, memslot,
-                                                       PT_DIRECTORY_LEVEL + j);
-                               ret |= handler(kvm, &linfo->rmap_pde, data);
+                               rmapp = __gfn_to_rmap(gfn, j, memslot);
+                               ret |= handler(kvm, rmapp, data);
                        }
                        trace_kvm_age_page(hva, memslot, ret);
                        retval |= ret;