All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Stabellini <sstabellini@kernel.org>
To: Julien Grall <julien.grall@arm.com>
Cc: sstabellini@kernel.org, volodymyr_babchuk@epam.com,
	andre.przywara@linaro.org, xen-devel@lists.xen.org
Subject: Re: [PATCH v3 08/17] xen/arm: psci: Detect SMCCC version
Date: Tue, 20 Feb 2018 16:16:40 -0800 (PST)	[thread overview]
Message-ID: <alpine.DEB.2.10.1802201616200.19448@sstabellini-ThinkPad-X260> (raw)
In-Reply-To: <20180215150248.28922-9-julien.grall@arm.com>

On Thu, 15 Feb 2018, Julien Grall wrote:
> PSCI 1.0 and later allows the SMCCC version to be (indirectly) probed
> via PSCI_FEATURES. If the PSCI_FEATURES does not exist (PSCI 0.2 or
> earlier) and the function return an error, then we considered SMCCC 1.0
> is implemented.
> 
> Signed-off-by: Julien Grall <julien.grall@arm.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>     Changes in v2:
>         - Patch added
> ---
>  xen/arch/arm/psci.c         | 34 +++++++++++++++++++++++++++++++++-
>  xen/include/asm-arm/smccc.h |  2 ++
>  2 files changed, 35 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
> index 5dda35cd7c..bc7b2260e8 100644
> --- a/xen/arch/arm/psci.c
> +++ b/xen/arch/arm/psci.c
> @@ -37,6 +37,7 @@
>  #endif
>  
>  uint32_t psci_ver;
> +uint32_t smccc_ver;
>  
>  static uint32_t psci_cpu_on_nr;
>  
> @@ -57,6 +58,14 @@ void call_psci_system_reset(void)
>          call_smc(PSCI_0_2_FN32_SYSTEM_RESET, 0, 0, 0);
>  }
>  
> +static int __init psci_features(uint32_t psci_func_id)
> +{
> +    if ( psci_ver < PSCI_VERSION(1, 0) )
> +        return PSCI_NOT_SUPPORTED;
> +
> +    return call_smc(PSCI_1_0_FN32_PSCI_FEATURES, psci_func_id, 0, 0);
> +}
> +
>  int __init psci_is_smc_method(const struct dt_device_node *psci)
>  {
>      int ret;
> @@ -82,6 +91,24 @@ int __init psci_is_smc_method(const struct dt_device_node *psci)
>      return 0;
>  }
>  
> +static void __init psci_init_smccc(void)
> +{
> +    /* PSCI is using at least SMCC 1.0 calling convention. */
> +    smccc_ver = ARM_SMCCC_VERSION_1_0;
> +
> +    if ( psci_features(ARM_SMCCC_VERSION_FID) != PSCI_NOT_SUPPORTED )
> +    {
> +        uint32_t ret;
> +
> +        ret = call_smc(ARM_SMCCC_VERSION_FID, 0, 0, 0);
> +        if ( ret != ARM_SMCCC_NOT_SUPPORTED )
> +            smccc_ver = ret;
> +    }
> +
> +    printk(XENLOG_INFO "Using SMC Calling Convention v%u.%u\n",
> +           SMCCC_VERSION_MAJOR(smccc_ver), SMCCC_VERSION_MINOR(smccc_ver));
> +}
> +
>  int __init psci_init_0_1(void)
>  {
>      int ret;
> @@ -173,7 +200,12 @@ int __init psci_init(void)
>      if ( ret )
>          ret = psci_init_0_1();
>  
> -    return ret;
> +    if ( ret )
> +        return ret;
> +
> +    psci_init_smccc();
> +
> +    return 0;
>  }
>  
>  /*
> diff --git a/xen/include/asm-arm/smccc.h b/xen/include/asm-arm/smccc.h
> index d0240d64bf..bc067892c7 100644
> --- a/xen/include/asm-arm/smccc.h
> +++ b/xen/include/asm-arm/smccc.h
> @@ -52,6 +52,8 @@
>  
>  #ifndef __ASSEMBLY__
>  
> +extern uint32_t smccc_ver;
> +
>  /* Check if this is fast call. */
>  static inline bool smccc_is_fast_call(register_t funcid)
>  {
> -- 
> 2.11.0
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2018-02-21  0:16 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-15 15:02 [PATCH v3 00/17] xen/arm: PSCI 1.1 and SMCCC-1.1 support and XSA-254 variant 2 update Julien Grall
2018-02-15 15:02 ` [PATCH v3 01/17] xen/arm: vpsci: Add support for PSCI 1.1 Julien Grall
2018-02-20  0:14   ` Stefano Stabellini
2018-02-21  0:37   ` Stefano Stabellini
2018-02-21  8:05     ` Julien Grall
2018-02-15 15:02 ` [PATCH v3 02/17] xen/arm: vsmc: Implement SMCCC 1.1 Julien Grall
2018-02-15 15:11   ` Volodymyr Babchuk
2018-02-20  0:22   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 03/17] xen/arm: vsmc: Implement SMCCC_ARCH_WORKAROUND_1 BP hardening support Julien Grall
2018-02-20  0:30   ` Stefano Stabellini
2018-02-21 16:34   ` Andre Przywara
2018-02-21 16:41     ` Julien Grall
2018-02-21 16:50       ` Andre Przywara
2018-02-15 15:02 ` [PATCH v3 04/17] xen/arm: Adapt smccc.h to be able to use it in assembly code Julien Grall
2018-02-20  0:30   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 05/17] xen/arm64: Implement a fast path for handling SMCCC_ARCH_WORKAROUND_1 Julien Grall
2018-02-21  0:37   ` Stefano Stabellini
2018-02-21 14:27   ` Andre Przywara
2018-02-22 13:58     ` Julien Grall
2018-02-15 15:02 ` [PATCH v3 06/17] xen/arm64: Print a per-CPU message with the BP hardening method used Julien Grall
2018-02-20  0:35   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 07/17] xen/arm: smccc: Add macros SMCCC_VERSION, SMCCC_VERSION_{MINOR, MAJOR} Julien Grall
2018-02-20  0:36   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 08/17] xen/arm: psci: Detect SMCCC version Julien Grall
2018-02-21  0:16   ` Stefano Stabellini [this message]
2018-02-21 14:43   ` Andre Przywara
2018-02-15 15:02 ` [PATCH v3 09/17] xen/arm: smccc: Implement SMCCC v1.1 inline primitive Julien Grall
2018-02-21  0:21   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 10/17] xen/arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support Julien Grall
2018-02-15 15:13   ` Volodymyr Babchuk
2018-02-21  0:35   ` Stefano Stabellini
2018-02-21  8:17     ` Julien Grall
2018-02-21 17:35       ` Stefano Stabellini
2018-02-22 16:03         ` Julien Grall
2018-02-21 16:07   ` Andre Przywara
2018-02-22 15:59     ` Julien Grall
2018-02-15 15:02 ` [PATCH v3 11/17] xen/arm64: Kill PSCI_GET_VERSION as a variant-2 workaround Julien Grall
2018-02-21  0:44   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 12/17] xen/arm: vpsci: Remove parameter 'ver' from do_common_cpu Julien Grall
2018-02-21  0:48   ` Stefano Stabellini
2018-02-21 16:27   ` Andre Przywara
2018-02-21 16:37     ` Julien Grall
2018-02-22 16:12       ` Julien Grall
2018-02-15 15:02 ` [PATCH v3 13/17] xen/arm: psci: Consolidate PSCI version print Julien Grall
2018-02-21  0:49   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 14/17] xen/arm: psci: Prefix with static any functions not exported Julien Grall
2018-02-21  0:50   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 15/17] xen/arm: vpsci: Update the return type for MIGRATE_INFO_TYPE Julien Grall
2018-02-21  0:52   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 16/17] xen/arm: vpsci: Introduce and use PSCI_INVALID_ADDRESS Julien Grall
2018-02-21  0:53   ` Stefano Stabellini
2018-02-15 15:02 ` [PATCH v3 17/17] xen/arm: vpsci: Rework the logic to start AArch32 vCPU in Thumb mode Julien Grall
2018-02-21  0:59   ` Stefano Stabellini
2018-02-21 16:01   ` Andre Przywara

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=alpine.DEB.2.10.1802201616200.19448@sstabellini-ThinkPad-X260 \
    --to=sstabellini@kernel.org \
    --cc=andre.przywara@linaro.org \
    --cc=julien.grall@arm.com \
    --cc=volodymyr_babchuk@epam.com \
    --cc=xen-devel@lists.xen.org \
    /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.