85xx/86xx: Ensure MP boot page is not used
authorKumar Gala <galak@kernel.crashing.org>
Tue, 31 Mar 2009 22:58:13 +0000 (17:58 -0500)
committerKumar Gala <galak@kernel.crashing.org>
Wed, 1 Apr 2009 20:29:49 +0000 (15:29 -0500)
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>
lib_ppc/board.c

index 3b93e4e..a33ee27 100644 (file)
 #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 */