summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2009-03-31 17:58:13 -0500
committerKumar Gala <galak@kernel.crashing.org>2009-04-01 15:29:49 -0500
commitfc39c2fd51e64707de4d61ed49479ebea2847e1b (patch)
tree61674d1c39bd6f0d7c99bf6d6ffbee38c4fbda92
parentc840d26c752141b94bbc24ac748ddd45752a955a (diff)
85xx/86xx: Ensure MP boot page is not used
We had a bug on 86xx in which the boot page used to bring up secondary cores was being overwritten and used for the malloc region in u-boot. We need to reserve the region of memory that the boot page is going to be put at so nothing uses it. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Becky Bruce <beckyb@kernel.crashing.org>
-rw-r--r--lib_ppc/board.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 3b93e4e158..a33ee27f26 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -79,6 +79,10 @@
#include <asm/mmu.h>
#endif
+#ifdef CONFIG_MP
+#include <asm/mp.h>
+#endif
+
#ifdef CONFIG_SYS_UPDATE_FLASH_SIZE
extern int update_flash_size (int flash_size);
#endif
@@ -444,6 +448,17 @@ void board_init_f (ulong bootflag)
addr = CONFIG_SYS_SDRAM_BASE + get_effective_memsize();
+#if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500))
+ /*
+ * We need to make sure the location we intend to put secondary core
+ * boot code is reserved and not used by any part of u-boot
+ */
+ if (addr > determine_mp_bootpg()) {
+ addr = determine_mp_bootpg();
+ debug ("Reserving MP boot page to %08lx\n", addr);
+ }
+#endif
+
#ifdef CONFIG_LOGBUFFER
#ifndef CONFIG_ALT_LB_ADDR
/* reserve kernel log buffer */