[PATCH] powerpc: memblock alloc fixes
Youlin Song
syl.loop at gmail.com
Fri Mar 12 20:07:47 AEDT 2021
If the memory starts at 64MB physical address,the memblock
will not be allocated.Because it was in the range of 0~64M
(according to TLB) to alloc when the system was started,
but the memblock calculates whether it is in this space
based on the actual physical address(offset 64M).
Signed-off-by: Youlin Song <syl.loop at gmail.com>
---
arch/powerpc/kernel/prom.c | 2 ++
arch/powerpc/mm/nohash/fsl_booke.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 9a4797d1d40d..addc05c6f8ff 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -785,6 +785,8 @@ void __init early_init_devtree(void *params)
DBG("Phys. mem: %llx\n", (unsigned long long)memblock_phys_mem_size());
+ memblock_set_bottom_up(true);
+
/* We may need to relocate the flat tree, do it now.
* FIXME .. and the initrd too? */
move_device_tree();
diff --git a/arch/powerpc/mm/nohash/fsl_booke.c b/arch/powerpc/mm/nohash/fsl_booke.c
index 03dacbe940e5..f6f36e78ec41 100644
--- a/arch/powerpc/mm/nohash/fsl_booke.c
+++ b/arch/powerpc/mm/nohash/fsl_booke.c
@@ -264,7 +264,7 @@ void setup_initial_memory_limit(phys_addr_t first_memblock_base,
phys_addr_t limit = first_memblock_base + first_memblock_size;
/* 64M mapped initially according to head_fsl_booke.S */
- memblock_set_current_limit(min_t(u64, limit, 0x04000000));
+ memblock_set_current_limit(min_t(u64, limit, first_memblock_base + 0x04000000));
}
#ifdef CONFIG_RELOCATABLE
--
2.25.1
More information about the Linuxppc-dev
mailing list