diff options
author | Gary Robertson <gary.robertson@linaro.org> | 2014-03-03 06:42:33 +0800 |
---|---|---|
committer | Gary Robertson <gary.robertson@linaro.org> | 2014-03-03 06:42:33 +0800 |
commit | de4c0af15b38d383e79555be2d72e7958f1c0756 (patch) | |
tree | a2f299215c432fdf00354a1307e22f7b8b8c4e40 /arch/arm64/mm/mmu.c | |
parent | 77fe582038582f6aa29a8e76ed319e05a69286e0 (diff) | |
parent | 61dde96f97bb5b1ed4c11caf9a857d55ad8f6e17 (diff) |
Merge tag 'v3.10.32' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable into linux-lnglinux-lng-v3.10.32-final
This is the 3.10.32 stable release
Diffstat (limited to 'arch/arm64/mm/mmu.c')
-rw-r--r-- | arch/arm64/mm/mmu.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 80a369eab637..ba7477efad5c 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -203,10 +203,18 @@ static void __init alloc_init_pmd(pud_t *pud, unsigned long addr, do { next = pmd_addr_end(addr, end); /* try section mapping first */ - if (((addr | next | phys) & ~SECTION_MASK) == 0) + if (((addr | next | phys) & ~SECTION_MASK) == 0) { + pmd_t old_pmd =*pmd; set_pmd(pmd, __pmd(phys | prot_sect_kernel)); - else + /* + * Check for previous table entries created during + * boot (__create_page_tables) and flush them. + */ + if (!pmd_none(old_pmd)) + flush_tlb_all(); + } else { alloc_init_pte(pmd, addr, next, __phys_to_pfn(phys)); + } phys += next - addr; } while (pmd++, addr = next, addr != end); } |