[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] xen/arm: introduce platform_smc
commit d5608349ba4f4a03b749af525c7bca91732971e1 Author: Edgar E. Iglesias <edgar.iglesias@xxxxxxxxxx> AuthorDate: Tue Dec 18 15:32:45 2018 -0800 Commit: Julien Grall <julien.grall@xxxxxxx> CommitDate: Wed Dec 19 13:48:51 2018 +0000 xen/arm: introduce platform_smc 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> Acked-by: Julien Grall <julien.grall@xxxxxxx> --- 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 0ba200164f..8eb0b6e57a 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 c4ccae6030..c72b9a04ff 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 bf9258156c..ed4d30a1be 100644 --- a/xen/include/asm-arm/platform.h +++ b/xen/include/asm-arm/platform.h @@ -25,6 +25,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 @@ -54,6 +56,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); -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |