aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2013-08-23 18:04:44 +0100
committerCatalin Marinas <catalin.marinas@arm.com>2013-08-28 10:47:00 +0100
commite25208f77c2dad5a9f2ab3d3df61252a90b71afa (patch)
tree13cc074cdd9d4db0c43029c3fcdab3d0845f30fe /arch/arm64/kernel
parentarm64: move elf notes into readonly segment (diff)
downloadlinux-dev-e25208f77c2dad5a9f2ab3d3df61252a90b71afa.tar.xz
linux-dev-e25208f77c2dad5a9f2ab3d3df61252a90b71afa.zip
arm64: Fix mapping of memory banks not ending on a PMD_SIZE boundary
The map_mem() function limits the current memblock limit to PGDIR_SIZE (the initial swapper_pg_dir mapping) to avoid create_mapping() allocating memory from unmapped areas. However, if the first block is within PGDIR_SIZE and not ending on a PMD_SIZE boundary, when 4K page configuration is enabled, create_mapping() will try to allocate a pte page. Such page may be returned by memblock_alloc() from the end of such bank (or any subsequent bank within PGDIR_SIZE) which is not mapped yet. The patch limits the current memblock limit to the aligned end of the first bank and gradually increases it as more memory is mapped. It also ensures that the start of the first bank is aligned to PMD_SIZE to avoid pte page allocation for this mapping. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Reported-by: "Leizhen (ThunderTown, Euler)" <thunder.leizhen@huawei.com> Tested-by: "Leizhen (ThunderTown, Euler)" <thunder.leizhen@huawei.com>
Diffstat (limited to 'arch/arm64/kernel')
0 files changed, 0 insertions, 0 deletions