[Cbe-oss-dev] [PATCH] Ignore memory listed in PS3 device tree
David Woodhouse
dwmw2 at infradead.org
Fri Mar 30 10:27:48 EST 2007
On Fri, 2007-03-30 at 09:23 +1000, Benjamin Herrenschmidt wrote:
> How can this work ? Memory is parsed from early_init_devtree() which is
> called before the platform probe() routines which is the one that sets
> FW_FEATURE_PS3_LV1...
Ah, good point. I was only testing on a PS3-only kernel -- I hadn't yet
graduated to a multiplatform kernel, because there were other problems
there (check_legacy_ioport).
At your suggestion, how about this approach instead...
Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
--- linux-2.6.20.ppc64/include/asm-powerpc/lmb.h~ 2007-02-04 18:44:54.000000000 +0000
+++ linux-2.6.20.ppc64/include/asm-powerpc/lmb.h 2007-03-30 01:13:45.000000000 +0100
@@ -51,6 +51,7 @@ extern unsigned long __init __lmb_alloc_
extern unsigned long __init lmb_phys_mem_size(void);
extern unsigned long __init lmb_end_of_DRAM(void);
extern void __init lmb_enforce_memory_limit(unsigned long memory_limit);
+void __init lmb_reset_available(void);
extern void lmb_dump_all(void);
--- linux-2.6.20.ppc64/arch/powerpc/mm/lmb.c~ 2007-02-04 18:44:54.000000000 +0000
+++ linux-2.6.20.ppc64/arch/powerpc/mm/lmb.c 2007-03-30 01:12:17.000000000 +0100
@@ -338,3 +338,11 @@ void __init lmb_enforce_memory_limit(uns
}
}
}
+
+void __init lmb_reset_available(void)
+{
+ lmb.memory.region[0].base = 0;
+ lmb.memory.region[0].size = 0;
+ lmb.memory.cnt = 1;
+ lmb.memory.size = 0;
+}
--- linux-2.6.20.ppc64/arch/powerpc/platforms/ps3/mm.c~ 2007-03-29 17:48:27.000000000 +0100
+++ linux-2.6.20.ppc64/arch/powerpc/platforms/ps3/mm.c 2007-03-30 01:24:04.000000000 +0100
@@ -796,6 +796,9 @@ void __init ps3_mm_init(void)
DBG(" -> %s:%d\n", __func__, __LINE__);
+ /* If an old-style device-tree registered memory, forget it */
+ lmb_reset_available();
+
result = ps3_repository_read_mm_info(&map.rm.base, &map.rm.size,
&map.total);
--
dwmw2
More information about the cbe-oss-dev
mailing list