[U-Boot] [PATCH] 85xx: Fix mapping of 0xfffffxxx when CONFIG_MP

Kumar Gala galak at kernel.crashing.org
Wed Jul 8 00:24:13 CEST 2009


On Jul 7, 2009, at 5:13 PM, Peter Tyser wrote:

> On Tue, 2009-07-07 at 16:59 -0500, Kumar Gala wrote:
>> On Jul 7, 2009, at 1:43 PM, Peter Tyser wrote:
>>
>>> Previously, boot page translation was enabled while U-Boot executed.
>>> This resulted in the address range 0xfffff000 - 0xffffffff being
>>> translated to SDRAM which made the 0xfffffxxx address space unusable
>>> for
>>> other peripherals.
>>>
>>> This change disables boot page translation after the secondary CPU
>>> cores
>>> have been initialized which allows the 0xfffffxxx address space to  
>>> be
>>> properly accessed.
>>>
>>> Signed-off-by: Peter Tyser <ptyser at xes-inc.com>
>>> ---
>>> This was tested on the XPedite5370 which has flash mapped in the
>>> 0xfffffxxx adddress space.  I verified the flash was accessible
>>> as expected and Linux properly brought up 2 cores.
>>>
>>> I wasn't sure how the MPC8572 handled caching with respect to the  
>>> boot
>>> page translation.  I didn't add any cache flushes/invalidates, but
>>> they
>>> may be necessary if the 0xfffffxxx range is not mapped as  
>>> uncachable.
>>> Anyone at Freescale have any comments on this?
>>>
>>> Best,
>>> Peter
>>
>> I'm concerned about this because we specifically avoid the 0xfffff000
>> - 0xffffffff range since if we reset a core we want it to go through
>> boot page translation.  Can you explain what you are putting at that
>> address?
>
> Most of our boards (MPC8548, MPC8640, MPC8572-based) have two 128MB
> flashes - 1 from 0xf0000000-0xf7f00000 and the other from 0xf8000000 -
> 0xffffffff.  We've used this convention for a while, before we started
> using MPC8572s.
>
> U-Boot is always stored at in the flash at 0xfff80000 on the
> MPC85xx-based boards we support.  Thus I couldn't reprogram U-Boot  
> when
> CONFIG_MP was defined since the top 4K of flash was really accessing
> SDRAM because of the boot page translation.
>
> With this patch boot page translation is still used to bring up the
> secondary cores on power on.  This change just makes it so that boot
> page translation is disabled after the other cores are brought up.

I understand what the patch does.  It just removes the capability of  
soft-resetting a core back into the boot translation code.  I  
understand your problem I'm just not keen on solving it by completely  
disabling boot translation.

We had a similar memory map and I moved away from it because of the  
reset vector issues.  Additionally, things like >4G of memory also  
start creeping up.

- k


More information about the U-Boot mailing list