|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |