Hi, Bryan Anson Huang Best Regards!
> -----Original Message----- > From: Bryan O'Donoghue [mailto:[email protected]] > Sent: Monday, May 28, 2018 4:59 PM > To: Anson Huang <[email protected]>; [email protected]; Fabio Estevam > <[email protected]>; [email protected]; > [email protected]; Peng Fan <[email protected]>; > [email protected]; [email protected] > Cc: dl-linux-imx <[email protected]>; [email protected] > Subject: Re: [PATCH 1/4] mx7: psci: add cpu hotplug support > > > > 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 <[email protected]> > > --- > > 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 Thanks, will improve them in patch V2 later. Anson. > > --- > bod _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

