From: Peng Fang <peng....@nxp.com>

On i.MX8MQ, SIP is mainly used for low-power mode, so it can be ignored.
See the following reference:
https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/arm-sip-service.rst

Signed-off-by: Peng Fang <peng....@nxp.com>
Signed-off-by: Claudio Scordino <clau...@evidence.eu.com>
---
 hypervisor/arch/arm-common/include/asm/psci.h |  3 +++
 hypervisor/arch/arm64/traps.c                 | 12 +++++++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/hypervisor/arch/arm-common/include/asm/psci.h 
b/hypervisor/arch/arm-common/include/asm/psci.h
index e635aec..76684db 100644
--- a/hypervisor/arch/arm-common/include/asm/psci.h
+++ b/hypervisor/arch/arm-common/include/asm/psci.h
@@ -32,6 +32,9 @@
 #define PSCI_CPU_IS_ON                 0
 #define PSCI_CPU_IS_OFF                        1
 
+#define IS_SIP_32(hvc)                 (((hvc) >> 24) == 0x82)
+#define IS_SIP_64(hvc)                 (((hvc) >> 24) == 0xc2)
+
 #define IS_PSCI_32(hvc)                        (((hvc) >> 24) == 0x84)
 #define IS_PSCI_64(hvc)                        (((hvc) >> 24) == 0xc4)
 #define IS_PSCI_UBOOT(hvc)             (((hvc) >> 8) == 0x95c1ba)
diff --git a/hypervisor/arch/arm64/traps.c b/hypervisor/arch/arm64/traps.c
index cd30923..d0a2737 100644
--- a/hypervisor/arch/arm64/traps.c
+++ b/hypervisor/arch/arm64/traps.c
@@ -36,10 +36,16 @@ static int handle_smc(struct trap_context *ctx)
 {
        unsigned long *regs = ctx->regs;
 
-       if (!IS_PSCI_32(regs[0]) && !IS_PSCI_64(regs[0]))
+       if (IS_PSCI_32(regs[0]) || IS_PSCI_64(regs[0])) {
+               regs[0] = psci_dispatch(ctx);
+#ifdef CONFIG_MACH_IMX8MQ
+       } else if (IS_SIP_32(regs[0]) || IS_SIP_64(regs[0])) {
+               /* This can be ignored */
+               regs[0] = PSCI_NOT_SUPPORTED;
+#endif
+       } else {
                return TRAP_UNHANDLED;
-
-       regs[0] = psci_dispatch(ctx);
+       }
 
        arch_skip_instruction(ctx);
 
-- 
2.7.4

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jailhouse-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to