]> nv-tegra.nvidia Code Review - linux-3.10.git/blobdiff - arch/powerpc/kvm/book3s_hv_rm_mmu.c
KVM: Move gfn_to_memslot() to kvm_host.h
[linux-3.10.git] / arch / powerpc / kvm / book3s_hv_rm_mmu.c
index 5f3c60b89faf482b05b9d5f7c03d09880c31947c..def880aea63a34eb0d49dceda27e27c848dffc35 100644 (file)
 #include <asm/synch.h>
 #include <asm/ppc-opcode.h>
 
-/*
- * Since this file is built in even if KVM is a module, we need
- * a local copy of this function for the case where kvm_main.c is
- * modular.
- */
-static struct kvm_memory_slot *builtin_gfn_to_memslot(struct kvm *kvm,
-                                               gfn_t gfn)
-{
-       struct kvm_memslots *slots;
-       struct kvm_memory_slot *memslot;
-
-       slots = kvm_memslots(kvm);
-       kvm_for_each_memslot(memslot, slots)
-               if (gfn >= memslot->base_gfn &&
-                     gfn < memslot->base_gfn + memslot->npages)
-                       return memslot;
-       return NULL;
-}
-
 /* Translate address of a vmalloc'd thing to a linear map address */
 static void *real_vmalloc_addr(void *x)
 {
@@ -99,7 +80,7 @@ static void remove_revmap_chain(struct kvm *kvm, long pte_index,
        rcbits = hpte_r & (HPTE_R_R | HPTE_R_C);
        ptel = rev->guest_rpte |= rcbits;
        gfn = hpte_rpn(ptel, hpte_page_size(hpte_v, ptel));
-       memslot = builtin_gfn_to_memslot(kvm, gfn);
+       memslot = __gfn_to_memslot(kvm_memslots(kvm), gfn);
        if (!memslot || (memslot->flags & KVM_MEMSLOT_INVALID))
                return;
 
@@ -181,7 +162,7 @@ long kvmppc_h_enter(struct kvm_vcpu *vcpu, unsigned long flags,
        /* Find the memslot (if any) for this address */
        gpa = (ptel & HPTE_R_RPN) & ~(psize - 1);
        gfn = gpa >> PAGE_SHIFT;
-       memslot = builtin_gfn_to_memslot(kvm, gfn);
+       memslot = __gfn_to_memslot(kvm_memslots(kvm), gfn);
        pa = 0;
        is_io = ~0ul;
        rmap = NULL;