[U-Boot] [PATCHv6 4/6] ARMv8/Layerscape: switch SMP method accordingly
york sun
york.sun at nxp.com
Wed Jun 22 18:21:43 CEST 2016
On 06/21/2016 08:45 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. Otherwise, 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>
> ---
> V6:
> - no change
>
> 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 | 34 +++++++++++++++++++++++++++++++++
> 2 files changed, 48 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> index d5bcf67..f284b77 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;
>
> @@ -622,6 +625,7 @@ int arch_early_init_r(void)
> {
> #ifdef CONFIG_MP
> int rv = 1;
> + bool psci_support = false;
> #endif
>
> #ifdef CONFIG_SYS_FSL_ERRATUM_A009635
> @@ -629,9 +633,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 = sec_firmware_support_psci_version() != 0xffffffff ?
> + true : false;
If the only error code is 0xffffffff, you can delete the "? true :
false" part. The logical operation results "true" or "false" already.
> +#endif
> + if (!psci_support) {
> + rv = fsl_layerscape_wake_seconday_cores();
> + if (rv)
> + printf("Did not wake secondary cores\n");
> + }
> #endif
<snip>
York
More information about the U-Boot
mailing list