summaryrefslogtreecommitdiffstats
path: root/arch/arm64/mm/mmu.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-02-17 23:45:02 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-02-17 23:45:02 +0100
commit6e9c6e87a662c6665053fc3cc7840ed6fa80414e (patch)
tree2c573ee6bd9e9d77b35ec956e3dfe8aca0ae6fa6 /arch/arm64/mm/mmu.c
parentStaging: comedi: kcomedilib: replace deprecated simple_strtoul() with kstrtou... (diff)
parentLinux 3.14-rc3 (diff)
downloadlinux-6e9c6e87a662c6665053fc3cc7840ed6fa80414e.tar.xz
linux-6e9c6e87a662c6665053fc3cc7840ed6fa80414e.zip
Merge 3.14-rc3 into staging-next
We want the fixes in this branch to make testing and future work easier. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/arm64/mm/mmu.c')
-rw-r--r--arch/arm64/mm/mmu.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index f557ebbe7013..f8dc7e8fce6f 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);
}