x86, mm: Use new pagetable helpers in try_preserve_large_page()
authorDave Hansen <dave@linux.vnet.ibm.com>
Tue, 22 Jan 2013 21:24:32 +0000 (13:24 -0800)
committerH. Peter Anvin <hpa@linux.intel.com>
Sat, 26 Jan 2013 00:33:23 +0000 (16:33 -0800)
try_preserve_large_page() can be slightly simplified by using
the new page_level_*() helpers.  This also moves the 'level'
over to the new pg_level enum type.

Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/20130122212432.14F3D993@kernel.stglabs.ibm.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/mm/pageattr.c

index 40f92f3..2a5c9ab 100644 (file)
@@ -396,7 +396,7 @@ try_preserve_large_page(pte_t *kpte, unsigned long address,
        pte_t new_pte, old_pte, *tmp;
        pgprot_t old_prot, new_prot, req_prot;
        int i, do_split = 1;
-       unsigned int level;
+       enum pg_level level;
 
        if (cpa->force_split)
                return 1;
@@ -412,15 +412,12 @@ try_preserve_large_page(pte_t *kpte, unsigned long address,
 
        switch (level) {
        case PG_LEVEL_2M:
-               psize = PMD_PAGE_SIZE;
-               pmask = PMD_PAGE_MASK;
-               break;
 #ifdef CONFIG_X86_64
        case PG_LEVEL_1G:
-               psize = PUD_PAGE_SIZE;
-               pmask = PUD_PAGE_MASK;
-               break;
 #endif
+               psize = page_level_size(level);
+               pmask = page_level_mask(level);
+               break;
        default:
                do_split = -EINVAL;
                goto out_unlock;