[U-Boot] [PATCH 1/4] mx7: psci: add cpu hotplug support
Bryan O'Donoghue
bryan.odonoghue at linaro.org
Mon May 28 08:59:17 UTC 2018
On 28/05/18 07:17, Anson Huang wrote:
> This patch adds cpu hotplug support, previous
> imx_cpu_off implementation is NOT safe, a CPU
> can NOT power down itself in runtime, it will cause
> system bus hang due to pending transaction. So
> need to use other online CPU to kill it when
> it is ready for killed.
>
> Here use SRC parameter register and a magic number
> of ~0 as handshake for killing a offline CPU,
> when the online CPU checks the psci_affinity_info,
> it will help kill the offline CPU according to
> the magic number stored in SRC parameter register.
>
> Signed-off-by: Anson Huang <Anson.Huang at nxp.com>
> ---
> arch/arm/mach-imx/mx7/psci-mx7.c | 31 ++++++++++++++++++++++++++++---
> arch/arm/mach-imx/mx7/psci.S | 14 ++++++++++++++
> 2 files changed, 42 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/mach-imx/mx7/psci-mx7.c b/arch/arm/mach-imx/mx7/psci-mx7.c
> index 7dc49bd..6f69fd3 100644
> --- a/arch/arm/mach-imx/mx7/psci-mx7.c
> +++ b/arch/arm/mach-imx/mx7/psci-mx7.c
> @@ -77,12 +77,37 @@ __secure int imx_cpu_on(int fn, int cpu, int pc)
>
> __secure int imx_cpu_off(int cpu)
> {
> - imx_enable_cpu_ca7(cpu, false);
> - imx_gpcv2_set_core1_power(false);
> - writel(0, SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D + 4);
> + /*
> + * We use the cpu jumping argument register to sync with
> + * imx_cpu_affinity() which is running on cpu0 to kill the cpu.
> + */
> + writel(~0, SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D + 4);
Small suggestion. Make that "SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D +
4" into some sort of macro
#define imx_cpu_gpr_offset(cpu) \
SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D + 4
you use it several times so its a good candidate for functional
decompisition IMO.
Also instead of having magic numbers - define them.
#define IMX_CPU_SYNC_ON ~0
#define IMX_CPU_SYNC_OFF 0
---
bod
More information about the U-Boot
mailing list