[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 |