All of lore.kernel.org
 help / color / mirror / Atom feed
From: York Sun <york.sun@nxp.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] arm: psci: make psci usable on single core socs
Date: Tue, 18 Apr 2017 09:08:29 -0700	[thread overview]
Message-ID: <ab05d3d7-685e-7eaf-4daf-70a84842b31c@nxp.com> (raw)
In-Reply-To: <1492053293-29516-1-git-send-email-andy.tang@nxp.com>

On 04/12/2017 08:29 PM, Yuantian Tang wrote:
> PSCI can be used on both multiple and single core socs. Current
> implementation only allows PSCI to work on multiple core socs.
> This patch removes this restriction so that PSCI can work on
> single core socs as well.
>
> Signed-off-by: Chenhui Zhao <chenhui.zhao@nxp.com>
> Signed-off-by: Tang Yuantian <andy.tang@nxp.com>
> ---
> v2:
> 	- refine the title and commit message
>
>  arch/arm/cpu/armv8/cpu-dt.c                   | 13 +++-------
>  arch/arm/cpu/armv8/fsl-layerscape/cpu.c       | 35 ++++++++++++---------------
>  arch/arm/cpu/armv8/sec_firmware.c             |  2 +-
>  arch/arm/include/asm/arch-fsl-layerscape/mp.h |  4 +++
>  arch/arm/include/asm/armv8/sec_firmware.h     |  7 ++++++
>  5 files changed, 31 insertions(+), 30 deletions(-)
>
> diff --git a/arch/arm/cpu/armv8/cpu-dt.c b/arch/arm/cpu/armv8/cpu-dt.c
> index 5156a15..e3c8aa2 100644
> --- a/arch/arm/cpu/armv8/cpu-dt.c
> +++ b/arch/arm/cpu/armv8/cpu-dt.c
> @@ -7,25 +7,19 @@
>  #include <common.h>
>  #include <asm/psci.h>
>  #include <asm/system.h>
> -#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
>  #include <asm/armv8/sec_firmware.h>
> -#endif
>
> +#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
>  int psci_update_dt(void *fdt)
>  {
> -#ifdef CONFIG_MP
> -#if defined(CONFIG_ARMV8_PSCI) || defined(CONFIG_SEC_FIRMWARE_ARMV8_PSCI)
> -
> -#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
>  	/*
>  	 * If the PSCI in SEC Firmware didn't work, avoid to update the
>  	 * device node of PSCI. But still return 0 instead of an error
>  	 * number to support detecting PSCI dynamically and then switching
>  	 * the SMP boot method between PSCI and spin-table.
>  	 */
> -	if (sec_firmware_support_psci_version() == 0xffffffff)
> +	if (sec_firmware_support_psci_version() == PSCI_INVALID_VER)
>  		return 0;
> -#endif
>  	fdt_psci(fdt);
>
>  #if defined(CONFIG_ARMV8_PSCI) && !defined(CONFIG_ARMV8_SECURE_BASE)
> @@ -34,7 +28,6 @@ int psci_update_dt(void *fdt)
>  			__secure_end - __secure_start);
>  #endif
>
> -#endif
> -#endif
>  	return 0;
>  }
> +#endif
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> index ea6c090..ccddd49 100644
> --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
> @@ -14,18 +14,14 @@
>  #include <asm/arch/soc.h>
>  #include <asm/arch/cpu.h>
>  #include <asm/arch/speed.h>
> -#ifdef CONFIG_MP
>  #include <asm/arch/mp.h>
> -#endif
>  #include <efi_loader.h>
>  #include <fm_eth.h>
>  #include <fsl-mc/fsl_mc.h>
>  #ifdef CONFIG_FSL_ESDHC
>  #include <fsl_esdhc.h>
>  #endif
> -#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
>  #include <asm/armv8/sec_firmware.h>
> -#endif
>  #ifdef CONFIG_SYS_FSL_DDR
>  #include <fsl_ddr.h>
>  #endif
> @@ -474,13 +470,19 @@ int cpu_eth_init(bd_t *bis)
>  	return error;
>  }
>
> -int arch_early_init_r(void)
> +static inline int check_psci(void)
>  {
> -#ifdef CONFIG_MP
> -	int rv = 1;
> -	u32 psci_ver = 0xffffffff;
> -#endif
> +	unsigned int psci_ver;
>
> +	psci_ver = sec_firmware_support_psci_version();
> +	if (psci_ver == PSCI_INVALID_VER)
> +		return 1;
> +
> +	return 0;
> +}
> +
> +int arch_early_init_r(void)
> +{
>  #ifdef CONFIG_SYS_FSL_ERRATUM_A009635
>  	u32 svr_dev_id;
>  	/*
> @@ -494,18 +496,13 @@ int arch_early_init_r(void)
>  #if defined(CONFIG_SYS_FSL_ERRATUM_A009942) && defined(CONFIG_SYS_FSL_DDR)
>  	erratum_a009942_check_cpo();
>  #endif
> -#ifdef CONFIG_MP
> -#if defined(CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT) && \
> -	defined(CONFIG_SEC_FIRMWARE_ARMV8_PSCI)
> -	/* Check the psci version to determine if the psci is supported */
> -	psci_ver = sec_firmware_support_psci_version();
> -#endif
> -	if (psci_ver == 0xffffffff) {
> -		rv = fsl_layerscape_wake_seconday_cores();
> -		if (rv)
> +	if (check_psci()) {
> +		printf("PSCI: PSCI does not exist.\n");
> +

Do you really need this message? You would see the number of cores up if 
spin table is used. If you really want this message, can you change this 
to debug()?

The rest of this patch is OK.

York

      reply	other threads:[~2017-04-18 16:08 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-13  3:14 [U-Boot] [PATCH v2] arm: psci: make psci usable on single core socs Yuantian Tang
2017-04-18 16:08 ` York Sun [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ab05d3d7-685e-7eaf-4daf-70a84842b31c@nxp.com \
    --to=york.sun@nxp.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.