KVM: MMU: cleanup page alloc and free
Xiao Guangrong [Fri, 4 Mar 2011 11:01:10 +0000 (19:01 +0800)]
Using __get_free_page instead of alloc_page and page_address,
using free_page instead of __free_page and virt_to_page

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Signed-off-by: Avi Kivity <avi@redhat.com>

arch/x86/kvm/mmu.c

index 91a1946..52645e3 100644 (file)
@@ -379,15 +379,15 @@ static void mmu_free_memory_cache(struct kvm_mmu_memory_cache *mc,
 static int mmu_topup_memory_cache_page(struct kvm_mmu_memory_cache *cache,
                                       int min)
 {
-       struct page *page;
+       void *page;
 
        if (cache->nobjs >= min)
                return 0;
        while (cache->nobjs < ARRAY_SIZE(cache->objects)) {
-               page = alloc_page(GFP_KERNEL);
+               page = (void *)__get_free_page(GFP_KERNEL);
                if (!page)
                        return -ENOMEM;
-               cache->objects[cache->nobjs++] = page_address(page);
+               cache->objects[cache->nobjs++] = page;
        }
        return 0;
 }
@@ -1032,9 +1032,9 @@ static void kvm_mmu_free_page(struct kvm *kvm, struct kvm_mmu_page *sp)
        ASSERT(is_empty_shadow_page(sp->spt));
        hlist_del(&sp->hash_link);
        list_del(&sp->link);
-       __free_page(virt_to_page(sp->spt));
+       free_page((unsigned long)sp->spt);
        if (!sp->role.direct)
-               __free_page(virt_to_page(sp->gfns));
+               free_page((unsigned long)sp->gfns);
        kmem_cache_free(mmu_page_header_cache, sp);
        kvm_mod_used_mmu_pages(kvm, -1);
 }