[U-Boot] [PATCHV5 4/6] ARMv8/Layerscape: switch SMP method accordingly

Zhiqiang Hou zhiqiang.hou at nxp.com
Mon Jun 13 10:30:45 CEST 2016


Hi York,

> -----Original Message-----
> From: Zhiqiang Hou
> Sent: 2016年6月12日 12:31
> To: york sun <york.sun at nxp.com>; u-boot at lists.denx.de;
> albert.u.boot at aribaud.net; scottwood at freescale.com;
> Mingkai.hu at freescale.com; yorksun at freescale.com; leoli at freescale.com;
> prabhakar at freescale.com; bhupesh.sharma at freescale.com
> Subject: RE: [PATCHV5 4/6] ARMv8/Layerscape: switch SMP method accordingly
> 
> Hi York,
> 
> Thanks for your comments!
> 
> > -----Original Message-----
> > From: york sun
> > Sent: 2016年6月12日 12:07
> > To: Zhiqiang Hou <zhiqiang.hou at nxp.com>; u-boot at lists.denx.de;
> > albert.u.boot at aribaud.net; scottwood at freescale.com;
> > Mingkai.hu at freescale.com; yorksun at freescale.com; leoli at freescale.com;
> > prabhakar at freescale.com; bhupesh.sharma at freescale.com
> > Subject: Re: [PATCHV5 4/6] ARMv8/Layerscape: switch SMP method
> > accordingly
> >
> > On 06/11/2016 08:58 PM, Zhiqiang Hou wrote:
> > > Hi York,
> > >
> > > Thanks for your comments!
> > >
> > >> -----Original Message-----
> > >> From: York Sun [mailto:york.sun at nxp.com]
> > >> Sent: 2016年6月8日 8:56
> > >> To: Zhiqiang Hou <zhiqiang.hou at nxp.com>; u-boot at lists.denx.de;
> > >> albert.u.boot at aribaud.net; scottwood at freescale.com;
> > >> Mingkai.hu at freescale.com; yorksun at freescale.com;
> > >> leoli at freescale.com; prabhakar at freescale.com;
> > >> bhupesh.sharma at freescale.com
> > >> Subject: Re: [PATCHV5 4/6] ARMv8/Layerscape: switch SMP method
> > >> accordingly
> > >>
> > >> On 06/04/2016 11:40 PM, Zhiqiang Hou wrote:
> > >>> From: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > >>>
> > >>> If the PSCI and PPA is ready, skip the fixup for spin-table and
> > >>> waking secondary cores. If not, change SMP method to spin-table,
> > >>> and the device node of PSCI will be removed.
> > >>>
> > >>> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > >>> ---
> > >>> V5:
> > >>>   - Changed the checking if the PSCI feature is ready to read the psci version.
> > >>>
> > >>> V4:
> > >>>   - Reordered this patch.
> > >>>
> > >>>   arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 17 +++++++++++++---
> > >>> arch/arm/cpu/armv8/fsl-layerscape/fdt.c | 36
> > >>> +++++++++++++++++++++++++++++++++
> > >>>   2 files changed, 50 insertions(+), 3 deletions(-)
> > >>>
> > >>> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > >>> b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > >>> index 672a453..eb566cd 100644
> > >>> --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > >>> +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> > >>> @@ -23,6 +23,9 @@
> > >>>   #ifdef CONFIG_FSL_ESDHC
> > >>>   #include <fsl_esdhc.h>
> > >>>   #endif
> > >>> +#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT #include
> > >>> +<asm/armv8/sec_firmware.h> #endif
> > >>>
> > >>>   DECLARE_GLOBAL_DATA_PTR;
> > >>>
> > >>> @@ -618,6 +621,7 @@ int arch_early_init_r(void)  {  #ifdef CONFIG_MP
> > >>>   	int rv = 1;
> > >>> +	bool psci_support = false;
> > >>>   #endif
> > >>>
> > >>>   #ifdef CONFIG_SYS_FSL_ERRATUM_A009635 @@ -625,9 +629,16 @@ int
> > >>> arch_early_init_r(void)  #endif
> > >>>
> > >>>   #ifdef CONFIG_MP
> > >>> -	rv = fsl_layerscape_wake_seconday_cores();
> > >>> -	if (rv)
> > >>> -		printf("Did not wake secondary cores\n");
> > >>> +#if defined(CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT) &&
> > >> defined(CONFIG_ARMV8_PSCI)
> > >>> +	/* Check the psci version to determine if the psci is supported */
> > >>> +	psci_support = (int)sec_firmware_support_psci_version() > 0 ?
> > >>> +			true : false;
> > >>
> > >> Another comment, even if the function can be used to indicate if
> > >> psci is available, do you have to cast it to (int)? I think this can be simplified as
> > >> 	psci_support = sec_firmware_support_psci_version() > 0;
> > >
> > > The type of this func return value is 'unsigned int', so the cast is necessary.
> >
> > The return value of function sec_firmware_support_psci_version() may
> > need some work. It has three results
> >
> > Positive numbers mean success (presuming bit 31 is not used by major number.
> > Need to check with PPA code) Zero means image is not valid Negative
> > numbers means errors
> 
> In PSCI spec v1.0, the bit 31 is used by major number, and the type of the return
> value is uint, but there isn't any other description for the return value. I don't know
> why the PPA isn't consistent with PSCI spec.

I misunderstand your words, and the PPA is consistent with PSCI spec.
Will take your suggestion that presuming bit 31 isn't used by major number to handle
the return value.
 
> > If the error code doesn't include -EINVAL, you can return -EINVAL in
> > case of an invalid image. Then you can have
> > sec_firmware_support_psci_version() return int.
> >

Thanks,
Zhiqiang


More information about the U-Boot mailing list