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

Scott Wood scottwood at freescale.com
Wed Aug 12 07:59:15 CEST 2015


On Wed, 2015-08-12 at 00:50 -0500, Wang Dongsheng-B40534 wrote:
> Hi Scott,
> 
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Wednesday, August 12, 2015 1:18 PM
> > To: Wang Dongsheng-B40534
> > Cc: Sun York-R58495; u-boot at lists.denx.de
> > Subject: Re: [PATCH v2] powerpc/fsl: support low power boot for e500 and 
> > later
> > 
> > On Wed, 2015-08-12 at 00:15 -0500, Wang Dongsheng-B40534 wrote:
> > > Hi Scott,
> > > 
> > > > -----Original Message-----
> > > > From: Wood Scott-B07421
> > > > Sent: Wednesday, August 12, 2015 12:55 PM
> > > > To: Wang Dongsheng-B40534
> > > > Cc: Sun York-R58495; u-boot at lists.denx.de
> > > > Subject: Re: [PATCH v2] powerpc/fsl: support low power boot for e500
> > > > and later
> > > > 
> > > > 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.
> > > > 
> > > Yes, if all of cpus will enable in kernel. But in some cases we do not
> > > enable all the CPU in the kernel, so we need to push them to low power
> > > state.
> > 
> > If you don't plan to release a CPU in the OS, tell U-Boot to keep it 
> > disabled.
> 
> Such as bootargs "maxcpus", as your said if we tell u-boot to keep it 
> disabled,
> I think that is a new work for spin table, that is your talked hold off 
> state when
> u-boot boot up?

The spin table code itself shouldn't be affected much, but plat_mp_up() would 
be called later (during bootm), and should check coredisr1 to skip any CPUs 
that have been disabled by the user.

> You means drop this patch? And keep secondary cpus in hold off state when u-
> boot
> Boot up and if needed release them in bootm?

Yes.

-Scott



More information about the U-Boot mailing list