arm64/mm: remove pointless map/unmap sequences when creating page tables
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 9 Mar 2017 20:52:08 +0000 (21:52 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 23 Mar 2017 14:09:12 +0000 (14:09 +0000)
The routines __pud_populate and __pmd_populate only create a table
entry at their respective level which refers to the next level page
by its physical address, so there is no reason to map this page and
then unmap it immediately after.

Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/mmu.c

index bc9d5eb7bfa2b32bfe5ec58c6754f31d224f6122..85ab82f5a0bc33654e510f8cf2357856ab7ec3f6 100644 (file)
@@ -128,9 +128,7 @@ static void alloc_init_pte(pmd_t *pmd, unsigned long addr,
                phys_addr_t pte_phys;
                BUG_ON(!pgtable_alloc);
                pte_phys = pgtable_alloc();
-               pte = pte_set_fixmap(pte_phys);
                __pmd_populate(pmd, pte_phys, PMD_TYPE_TABLE);
-               pte_clear_fixmap();
        }
        BUG_ON(pmd_bad(*pmd));
 
@@ -168,9 +166,7 @@ static void alloc_init_pmd(pud_t *pud, unsigned long addr, unsigned long end,
                phys_addr_t pmd_phys;
                BUG_ON(!pgtable_alloc);
                pmd_phys = pgtable_alloc();
-               pmd = pmd_set_fixmap(pmd_phys);
                __pud_populate(pud, pmd_phys, PUD_TYPE_TABLE);
-               pmd_clear_fixmap();
        }
        BUG_ON(pud_bad(*pud));