[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v5 1/7] xen/arm: introduce platform_smc



On Mon, 3 Dec 2018, Stefano Stabellini wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias@xxxxxxxxxx>
> 
> From: Edgar E. Iglesias <edgar.iglesias@xxxxxxxxxx>

Sorry about this, I haven't found a way to deal with this problem
automatically with git and guilt yet.



> Introduce platform_smc as a way to handle firmware calls that Xen does
> not know about in a platform specific way. This is particularly useful
> for implementing the SiP (SoC implementation specific) service calls.
> 
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xxxxxxxxxx>
> Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx>
> 
> ---
> Changes in v4:
> - add likely
> ---
>  xen/arch/arm/platform.c        | 8 ++++++++
>  xen/arch/arm/vsmc.c            | 4 ++++
>  xen/include/asm-arm/platform.h | 3 +++
>  3 files changed, 15 insertions(+)
> 
> diff --git a/xen/arch/arm/platform.c b/xen/arch/arm/platform.c
> index 6989e58..3426056 100644
> --- a/xen/arch/arm/platform.c
> +++ b/xen/arch/arm/platform.c
> @@ -127,6 +127,14 @@ void platform_poweroff(void)
>          platform->poweroff();
>  }
>  
> +bool platform_smc(struct cpu_user_regs *regs)
> +{
> +    if ( likely(platform && platform->smc) )
> +        return platform->smc(regs);
> +
> +    return false;
> +}
> +
>  bool platform_has_quirk(uint32_t quirk)
>  {
>      uint32_t quirks = 0;
> diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
> index c4ccae6..c72b9a0 100644
> --- a/xen/arch/arm/vsmc.c
> +++ b/xen/arch/arm/vsmc.c
> @@ -25,6 +25,7 @@
>  #include <asm/smccc.h>
>  #include <asm/traps.h>
>  #include <asm/vpsci.h>
> +#include <asm/platform.h>
>  
>  /* Number of functions currently supported by Hypervisor Service. */
>  #define XEN_SMCCC_FUNCTION_COUNT 3
> @@ -272,6 +273,9 @@ static bool vsmccc_handle_call(struct cpu_user_regs *regs)
>          case ARM_SMCCC_OWNER_STANDARD:
>              handled = handle_sssc(regs);
>              break;
> +        case ARM_SMCCC_OWNER_SIP:
> +            handled = platform_smc(regs);
> +            break;
>          }
>      }
>  
> diff --git a/xen/include/asm-arm/platform.h b/xen/include/asm-arm/platform.h
> index 2591d7b..dc55b6d 100644
> --- a/xen/include/asm-arm/platform.h
> +++ b/xen/include/asm-arm/platform.h
> @@ -26,6 +26,8 @@ struct platform_desc {
>      void (*reset)(void);
>      /* Platform power-off */
>      void (*poweroff)(void);
> +    /* Platform specific SMC handler */
> +    bool (*smc)(struct cpu_user_regs *regs);
>      /*
>       * Platform quirks
>       * Defined has a function because a platform can support multiple
> @@ -55,6 +57,7 @@ int platform_cpu_up(int cpu);
>  #endif
>  void platform_reset(void);
>  void platform_poweroff(void);
> +bool platform_smc(struct cpu_user_regs *regs);
>  bool platform_has_quirk(uint32_t quirk);
>  bool platform_device_is_blacklisted(const struct dt_device_node *node);
>  
> -- 
> 1.9.1
> 

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.