[U-Boot] [PATCH 1/2 v3] 85xx: MP Boot Page Translation update

Kumar Gala galak at kernel.crashing.org
Tue Oct 27 15:37:09 CET 2009


On Oct 23, 2009, at 3:55 PM, Peter Tyser wrote:

> This change has 3 goals:
> - Have secondary cores be released into spin loops at their 'true'
>  address in SDRAM.  Previously, secondary cores were put into spin
>  loops in the 0xfffffxxx address range which required that boot page
>  translation was always enabled while cores were in their spin loops.
>
> - Allow the TLB window that the primary core uses to access the
>  secondary cores boot page to be placed at any address.  Previously, a
>  TLB window at 0xfffff000 was always used to access the seconary  
> cores'
>  boot page.  This TLB address requirement overlapped with other
>  peripherals on some boards (eg XPedite5370).  By default, the boot
>  page TLB will still use the 0xfffffxxx address range, but this can be
>  overridden on a board-by-board basis by defining a custom
>  CONFIG_BPTR_VIRT_ADDR.  Note that the TLB used to map the boot page
>  remains in use while U-Boot executes.  Previously it was only
>  temporarily used, then restored to its initial value.
>
> - Allow Boot Page Translation to be disabled on bootup.  Previously,
>  Boot Page Translation was always left enabled after secondary cores
>  were brought out of reset.  This caused the 0xfffffxxx address range
>  to somewhat "magically" be translated to an address in SDRAM.  Some
>  boards may not want this oddity in their memory map, so defining
>  CONFIG_MPC8xxx_DISABLE_BPTR will turn off Boot Page Translation after
>  the secondary cores are initialized.
>
> These changes are only applicable to 85xx boards with CONFIG_MP  
> defined.
>
> Signed-off-by: Peter Tyser <ptyser at xes-inc.com>
> ---
> Hi Kumar,
> Hopefully this isn't too invasive...  I tried to address your previous
> v2 comments of:
> - Its possible that the location in memory is not mapped in the TLBs.
>  We typically max out @ 2G of DDR mapped (via the TLBs).  So what
>  happens if we have 3G of DDR?
> - We expect the the address that the spin table is at to be marked
>  cache-inhibited.
>
> Changes since v1:
> - Use clrbits_be32() instead of in/out_be32()
>
> - Boot page translation is only disabled when  
> CONFIG_MPC8xxx_DISABLT_BPTR
>  is defined.
>
> - Instead of zeroing out BPTR when disabling translation, this
>  patch only disables translation, but maintins the translation
>  address.  This should make it easier to properly re-enable
>  translation if need be.
>
> Changes since v2:
> - Use CONFIG_BPTR_VIRT_ADDR to determine virtual address of secondary
>  cores' boot page
> - Split get_spin_addr() into get_[phys|virt]_addr()
>
> cpu/mpc85xx/fdt.c        |    2 +-
> cpu/mpc85xx/mp.c         |   70 +++++++++++++++++++++++++++++ 
> +----------------
> cpu/mpc85xx/mp.h         |    3 +-
> cpu/mpc85xx/release.S    |   34 +++++++++++++++++++---
> include/asm-ppc/config.h |   10 ++++++
> 5 files changed, 88 insertions(+), 31 deletions(-)

applied to 85xx

- k


More information about the U-Boot mailing list