|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v5 17/18] xen/arm: vpsci: Introduce and use PSCI_INVALID_ADDRESS
PSCI 1.0 added the error return PSCI_INVALID_ADDRESS. It is used to
indicate the entry point address is known to be invalid.
In Xen case, this error could be returned when a 64-bit vCPU is using a
Thumb entry address.
For PSCI 0.1 implementation, return PSCI_INVALID_PARAMETERS instead.
Suggested-by: mirela.simonovic@xxxxxxxxxx
Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
Cc: mirela.simonovic@xxxxxxxxxx
---
Changes in v4:
- Add Stefano's reviewed-by
Changes in v3:
- Patch added
---
xen/arch/arm/vpsci.c | 10 +++++++---
xen/include/asm-arm/psci.h | 1 +
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/xen/arch/arm/vpsci.c b/xen/arch/arm/vpsci.c
index 9a082aa6ee..1729f7071e 100644
--- a/xen/arch/arm/vpsci.c
+++ b/xen/arch/arm/vpsci.c
@@ -38,7 +38,7 @@ static int do_common_cpu_on(register_t target_cpu, register_t
entry_point,
/* THUMB set is not allowed with 64-bit domain */
if ( is_64bit_domain(d) && is_thumb )
- return PSCI_INVALID_PARAMETERS;
+ return PSCI_INVALID_ADDRESS;
if ( !test_bit(_VPF_down, &v->pause_flags) )
return PSCI_ALREADY_ON;
@@ -99,10 +99,14 @@ static int32_t do_psci_cpu_on(uint32_t vcpuid, register_t
entry_point)
ret = do_common_cpu_on(vcpuid, entry_point, 0);
/*
- * PSCI 0.1 does not define the return code PSCI_ALREADY_ON.
+ * PSCI 0.1 does not define the return codes PSCI_ALREADY_ON and
+ * PSCI_INVALID_ADDRESS.
* Instead, return PSCI_INVALID_PARAMETERS.
*/
- return (ret == PSCI_ALREADY_ON) ? PSCI_INVALID_PARAMETERS : ret;
+ if ( ret == PSCI_ALREADY_ON || ret == PSCI_INVALID_ADDRESS )
+ ret = PSCI_INVALID_PARAMETERS;
+
+ return ret;
}
static int32_t do_psci_cpu_off(uint32_t power_state)
diff --git a/xen/include/asm-arm/psci.h b/xen/include/asm-arm/psci.h
index e2629eed01..9ac820e94a 100644
--- a/xen/include/asm-arm/psci.h
+++ b/xen/include/asm-arm/psci.h
@@ -13,6 +13,7 @@
#define PSCI_INTERNAL_FAILURE -6
#define PSCI_NOT_PRESENT -7
#define PSCI_DISABLED -8
+#define PSCI_INVALID_ADDRESS -9
/* availability of PSCI on the host for SMP bringup */
extern uint32_t psci_ver;
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |