On Apr 1, 2009, at 11:06 AM, Kumar Gala wrote: > Match determine_mp_bootpg() that was added for 86xx. We need this to > address a bug introduced in v2009.03 with 86xx MP booting. We have to > make sure to reserve the region of memory used for the MP bootpg() so > other u-boot code doesn't use it. > > Signed-off-by: Kumar Gala <ga...@kernel.crashing.org>
Acked-by: Becky Bruce <bec...@kernel.crashing.org> > > --- > * fix up based on tweak to patch 1/3 > > cpu/mpc85xx/fdt.c | 9 ++------- > cpu/mpc85xx/mp.c | 25 +++++++++++-------------- > cpu/mpc85xx/mp.h | 1 + > 3 files changed, 14 insertions(+), 21 deletions(-) > > diff --git a/cpu/mpc85xx/fdt.c b/cpu/mpc85xx/fdt.c > index 2d36c24..26a8f48 100644 > --- a/cpu/mpc85xx/fdt.c > +++ b/cpu/mpc85xx/fdt.c > @@ -39,13 +39,8 @@ void ft_fixup_cpu(void *blob, u64 memory_limit) > { > int off; > ulong spin_tbl_addr = get_spin_addr(); > - u32 bootpg, id = get_my_id(); > - > - /* if we have 4G or more of memory, put the boot page at 4Gb-4k */ > - if ((u64)gd->ram_size > 0xfffff000) > - bootpg = 0xfffff000; > - else > - bootpg = gd->ram_size - 4096; > + u32 bootpg = determine_mp_bootpg(); > + u32 id = get_my_id(); > > off = fdt_node_offset_by_prop_value(blob, -1, "device_type", "cpu", > 4); > while (off != -FDT_ERR_NOTFOUND) { > diff --git a/cpu/mpc85xx/mp.c b/cpu/mpc85xx/mp.c > index 3338c1a..8ddd81d 100644 > --- a/cpu/mpc85xx/mp.c > +++ b/cpu/mpc85xx/mp.c > @@ -112,6 +112,15 @@ int cpu_release(int nr, int argc, char *argv[]) > return 0; > } > > +u32 determine_mp_bootpg(void) > +{ > + /* if we have 4G or more of memory, put the boot page at 4Gb-4k */ > + if ((u64)gd->ram_size > 0xfffff000) > + return (0xfffff000); > + > + return (gd->ram_size - 4096); > +} > + > ulong get_spin_addr(void) > { > extern ulong __secondary_start_page; > @@ -188,13 +197,7 @@ static void pq3_mp_up(unsigned long bootpg) > > void cpu_mp_lmb_reserve(struct lmb *lmb) > { > - u32 bootpg; > - > - /* if we have 4G or more of memory, put the boot page at 4Gb-4k */ > - if ((u64)gd->ram_size > 0xfffff000) > - bootpg = 0xfffff000; > - else > - bootpg = gd->ram_size - 4096; > + u32 bootpg = determine_mp_bootpg(); > > lmb_reserve(lmb, bootpg, 4096); > } > @@ -203,13 +206,7 @@ void setup_mp(void) > { > extern ulong __secondary_start_page; > ulong fixup = (ulong)&__secondary_start_page; > - u32 bootpg; > - > - /* if we have 4G or more of memory, put the boot page at 4Gb-4k */ > - if ((u64)gd->ram_size > 0xfffff000) > - bootpg = 0xfffff000; > - else > - bootpg = gd->ram_size - 4096; > + u32 bootpg = determine_mp_bootpg(); > > memcpy((void *)bootpg, (void *)fixup, 4096); > flush_cache(bootpg, 4096); > diff --git a/cpu/mpc85xx/mp.h b/cpu/mpc85xx/mp.h > index 4329286..71423ef 100644 > --- a/cpu/mpc85xx/mp.h > +++ b/cpu/mpc85xx/mp.h > @@ -5,6 +5,7 @@ ulong get_spin_addr(void); > void setup_mp(void); > u32 get_my_id(void); > void cpu_mp_lmb_reserve(struct lmb *lmb); > +u32 determine_mp_bootpg(void); > > #define BOOT_ENTRY_ADDR_UPPER 0 > #define BOOT_ENTRY_ADDR_LOWER 1 > -- > 1.5.6.6 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot