
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@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@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@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.
Regards, -Dongsheng