arm64: Enforce BBM for huge IO/VMAP mappings
ioremap_page_range doesn't honour break-before-make and attempts to put down huge mappings (using p*d_set_huge) over the top of pre-existing table entries. This leads to us leaking page table memory and also gives rise to TLB conflicts and spurious aborts, which have been seen in practice on Cortex-A75. Until this has been resolved, refuse to put block mappings when the existing entry is found to be present. Fixes: 324420bf ("arm64: add support for ioremap() block mappings") Reported-by:Hanjun Guo <hanjun.guo@linaro.org> Reported-by:
Lei Li <lious.lilei@hisilicon.com> Acked-by:
Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by:
Will Deacon <will.deacon@arm.com> Signed-off-by:
Catalin Marinas <catalin.marinas@arm.com> Git-Commit: 15122ee2c515a253b0c66a3e618bc7ebe35105eb Git-Repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Change-Id: I9e94033b55803f32e58fe8a09d31d4979e9590c7 Signed-off-by:
Patrick Daly <pdaly@codeaurora.org>
Loading
Please register or sign in to comment