|
@@ -66,6 +66,7 @@
|
|
|
int __initdata iommu_is_off;
|
|
|
int __initdata iommu_force_on;
|
|
|
unsigned long tce_alloc_start, tce_alloc_end;
|
|
|
+u64 ppc64_rma_size;
|
|
|
#endif
|
|
|
|
|
|
static int __init early_parse_mem(char *p)
|
|
@@ -492,7 +493,7 @@ static int __init early_init_dt_scan_memory_ppc(unsigned long node,
|
|
|
|
|
|
void __init early_init_dt_add_memory_arch(u64 base, u64 size)
|
|
|
{
|
|
|
-#if defined(CONFIG_PPC64)
|
|
|
+#ifdef CONFIG_PPC64
|
|
|
if (iommu_is_off) {
|
|
|
if (base >= 0x80000000ul)
|
|
|
return;
|
|
@@ -501,9 +502,13 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
- memblock_add(base, size);
|
|
|
-
|
|
|
+ /* First MEMBLOCK added, do some special initializations */
|
|
|
+ if (memstart_addr == ~(phys_addr_t)0)
|
|
|
+ setup_initial_memory_limit(base, size);
|
|
|
memstart_addr = min((u64)memstart_addr, base);
|
|
|
+
|
|
|
+ /* Add the chunk to the MEMBLOCK list */
|
|
|
+ memblock_add(base, size);
|
|
|
}
|
|
|
|
|
|
u64 __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
|
|
@@ -655,22 +660,6 @@ static void __init phyp_dump_reserve_mem(void)
|
|
|
static inline void __init phyp_dump_reserve_mem(void) {}
|
|
|
#endif /* CONFIG_PHYP_DUMP && CONFIG_PPC_RTAS */
|
|
|
|
|
|
-static void set_boot_memory_limit(void)
|
|
|
-{
|
|
|
-#ifdef CONFIG_PPC32
|
|
|
- /* 601 can only access 16MB at the moment */
|
|
|
- if (PVR_VER(mfspr(SPRN_PVR)) == 1)
|
|
|
- memblock_set_current_limit(0x01000000);
|
|
|
- /* 8xx can only access 8MB at the moment */
|
|
|
- else if (PVR_VER(mfspr(SPRN_PVR)) == 0x50)
|
|
|
- memblock_set_current_limit(0x00800000);
|
|
|
- else
|
|
|
- memblock_set_current_limit(0x10000000);
|
|
|
-#else
|
|
|
- memblock_set_current_limit(memblock.rmo_size);
|
|
|
-#endif
|
|
|
-}
|
|
|
-
|
|
|
void __init early_init_devtree(void *params)
|
|
|
{
|
|
|
phys_addr_t limit;
|
|
@@ -734,8 +723,6 @@ void __init early_init_devtree(void *params)
|
|
|
|
|
|
DBG("Phys. mem: %llx\n", memblock_phys_mem_size());
|
|
|
|
|
|
- set_boot_memory_limit();
|
|
|
-
|
|
|
/* We may need to relocate the flat tree, do it now.
|
|
|
* FIXME .. and the initrd too? */
|
|
|
move_device_tree();
|