RE: [PATCH] [RESEND] arm: limit memblock base address for early_pte_alloc
From: Kim, Jong-Sung <hidden>
Date: 2012-06-28 05:43:28
Also in:
linux-arm-kernel, lkml
Subsystem:
arm port, the rest · Maintainers:
Russell King, Linus Torvalds
From: Dave Martin [mailto:dave.martin@linaro.org] Sent: Thursday, June 28, 2012 1:02 AM For me, it appears that this block just contains the initial region passed in ATAG_MEM or on the command line, with some reservations for swapper_pg_dir, the kernel text/data, device tree and initramfs. So far as I can tell, the only memory guaranteed to be mapped here is the kernel image: there may be no guarantee that there is any unused space in this region which could be used to allocate extra page tables. The rest appears during the execution of map_lowmem(). Cheers ---Dave
Thank you for your comment, Dave! It was not that sophisticated choice, but I thought that normal embedded system trying to reduce the BOM would have a big-enough first memblock memory region. However you're right. There can be exceptional systems. Then, how do you think about following manner:
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index e5dad60..0bc5316 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c@@ -1094,6 +1094,16 @@ static void __init kmap_init(void) static void __init map_lowmem(void) { struct memblock_region *reg; + phys_addr_t pmd_map_end = 0; + + for_each_memblock(memory, reg) { + pmd_map_end = reg->base + reg->size; + if((reg->base | reg->size) & ~PMD_MASK) + break; + } + if(pmd_map_end > lowmem_limit) + pmd_map_end = lowmem_limit; + memblock_set_current_limit(pmd_map_end & PMD_MASK); /* Map all the lowmem memory banks. */ for_each_memblock(memory, reg) {
@@ -1113,6 +1123,8 @@ static void __init map_lowmem(void) create_mapping(&map); } + + memblock_set_current_limit(lowmem_limit); } /*
@@ -1123,8 +1135,6 @@ void __init paging_init(struct machine_desc *mdesc) { void *zero_page; - memblock_set_current_limit(arm_lowmem_limit); - build_mem_type_table(); prepare_page_table(); map_lowmem();
This will not limit the PTE-allocation to near the end of first bank. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>