[U-Boot] [PATCH v2] powerpc/fsl: support low power boot for e500 and later

Scott Wood scottwood at freescale.com
Wed Aug 12 06:54:58 CEST 2015


On Tue, 2015-08-11 at 15:15 +0800, Dongsheng Wang wrote:
> From: Wang Dongsheng <dongsheng.wang at freescale.com>
> 
> low power boot means u-boot will put non-boot cpus into a low power
> status. Non-boot cpus don't need any more spin wait. e500, e500v2 will
> going to DOZE status. e500mc, e5500, e6500 will going to PW10 state.
> 
> e500/e500v2 will be kicked up by MPIC-IPI, e500mc later will be kicked up
> by doorbell.
> 
> This feature tested on:
> POWER UP TEST:
> P1022DS(e500v2),96k times.
> P4080(e500mc),  110k times.
> T1024(e5500),   83k times.
> T4240(e6500),   150k times.
> 
> CPU HOTPLUG TEST:
> P1022DS(e500v2),1.4 million times.
> P4080(e500mc),  1.8 million times.
> T1024(e5500),   1.3 million times.
> T4240(e6500),   1.1 million times.
> 
> Signed-off-by: Wang Dongsheng <dongsheng.wang at freescale.com>
> ---
> *V2*
> Add:
>     Add Config option to select Boot Method, Boot by SPIN TABLE or Boot By
>     LOW POWER.
>     The default boot method is SPIN TABLE.
> 
> Modify:
>     Rebase code to compatible with spin.
> 
> Delete:
>     Delete e6500rev2 PW20 state.
> 
> The default boot method SPIN TABLE has tested on last kernel. The low power 
> boot
> method need add a kernel patch to support. Now PPC smp cpu boot, cpu 
> hotplug,
> sleep, and deep sleep patches is rebasing for upstream, after ppc smp cpu 
> boot
> upstreamed i will commit a kernel patch to complete support low power boot 
> method.
> 
> diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig 
> b/arch/powerpc/cpu/mpc85xx/Kconfig
> index 3e8d0b1..9c81d97 100644
> --- a/arch/powerpc/cpu/mpc85xx/Kconfig
> +++ b/arch/powerpc/cpu/mpc85xx/Kconfig
> @@ -199,3 +199,26 @@ source "board/xes/xpedite550x/Kconfig"
>  source "board/Arcturus/ucp1020/Kconfig"
>  
>  endmenu
> +
> +menu "mpc85xx CPU Boot Method"
> +     depends on MPC85xx
> +
> +choice
> +     prompt "Boot select"
> +     default BOOT_BY_SPIN
> +
> +config       BOOT_BY_SPIN
> +     bool "Spin boot cpus"
> +     help
> +       Non-boot cpus will be falled in a spin state when U-boot
> +       started up.
> +
> +config       BOOT_BY_LOW_POWER
> +     bool "Low power boot cpus"
> +     help
> +       Non-boot cpus will be falled in a low power state when U-boot
> +       started up.
> +
> +endchoice

I was going to say that this could be made dynamically configurable by always 
putting the cores into low power mode, and then waking them at bootm time if 
the spin table is chosen in the environment -- but if we can do that, we can 
also just leave the secondary cpus in holdoff until bootm.

At that point, we might as well just always use the spin table because the 
time from bootm to the OS releasing the secondaries should be small.

-Scott



More information about the U-Boot mailing list