ARM platforms: Make arm_validate_ns_entrypoint() common
authorJeenu Viswambharan <jeenu.viswambharan@arm.com>
Tue, 19 Sep 2017 08:27:18 +0000 (09:27 +0100)
committerJeenu Viswambharan <jeenu.viswambharan@arm.com>
Mon, 13 Nov 2017 08:38:51 +0000 (08:38 +0000)
The function arm_validate_ns_entrypoint() validates a given non-secure
physical address. This function however specifically returns PSCI error
codes.

Non-secure physical address validation is potentially useful across ARM
platforms, even for non-PSCI use cases. Therefore make this function
common by returning 0 for success or -1 otherwise.

Having made the function common, make arm_validate_psci_entrypoint() a
wrapper around arm_validate_ns_entrypoint() which only translates return
value into PSCI error codes. This wrapper is now used where
arm_validate_ns_entrypoint() was currently used for PSCI entry point
validation.

Change-Id: Ic781fc3105d6d199fd8f53f01aba5baea0ebc310
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
include/plat/arm/common/plat_arm.h
plat/arm/board/fvp/fvp_pm.c
plat/arm/common/arm_pm.c
plat/arm/css/common/css_pm.c

index 33d951c2a18be3d8cc96b45895250b6cdce411a3..a28a903679a9d617079e765314d7a94c261ab7c0 100644 (file)
@@ -119,6 +119,7 @@ void arm_configure_sys_timer(void);
 /* PM utility functions */
 int arm_validate_power_state(unsigned int power_state,
                            psci_power_state_t *req_state);
+int arm_validate_psci_entrypoint(uintptr_t entrypoint);
 int arm_validate_ns_entrypoint(uintptr_t entrypoint);
 void arm_system_pwr_domain_save(void);
 void arm_system_pwr_domain_resume(void);
index faeb1b7775b586efea0f32a577fb93ba1cb05513..0ab5b8207800bcf6e277604c3c6cc9f4b64e1936 100644 (file)
@@ -398,7 +398,7 @@ plat_psci_ops_t plat_arm_psci_pm_ops = {
        .system_off = fvp_system_off,
        .system_reset = fvp_system_reset,
        .validate_power_state = fvp_validate_power_state,
-       .validate_ns_entrypoint = arm_validate_ns_entrypoint,
+       .validate_ns_entrypoint = arm_validate_psci_entrypoint,
        .translate_power_state_by_mpidr = fvp_translate_power_state_by_mpidr,
        .get_node_hw_state = fvp_node_hw_state,
        .get_sys_suspend_power_state = fvp_get_sys_suspend_power_state,
index 5e7e047a55232af4f8d4e356a6687b5aa4ce04d4..44ac5b5d667396ba10c6e9cdde0f5e2f6cc934cc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -112,7 +112,7 @@ int arm_validate_power_state(unsigned int power_state,
 
 /*******************************************************************************
  * ARM standard platform handler called to check the validity of the non secure
- * entrypoint.
+ * entrypoint. Returns 0 if the entrypoint is valid, or -1 otherwise.
  ******************************************************************************/
 int arm_validate_ns_entrypoint(uintptr_t entrypoint)
 {
@@ -121,15 +121,23 @@ int arm_validate_ns_entrypoint(uintptr_t entrypoint)
         * secure DRAM.
         */
        if ((entrypoint >= ARM_NS_DRAM1_BASE) && (entrypoint <
-                       (ARM_NS_DRAM1_BASE + ARM_NS_DRAM1_SIZE)))
-               return PSCI_E_SUCCESS;
+                       (ARM_NS_DRAM1_BASE + ARM_NS_DRAM1_SIZE))) {
+               return 0;
+       }
 #ifndef AARCH32
        if ((entrypoint >= ARM_DRAM2_BASE) && (entrypoint <
-                       (ARM_DRAM2_BASE + ARM_DRAM2_SIZE)))
-               return PSCI_E_SUCCESS;
+                       (ARM_DRAM2_BASE + ARM_DRAM2_SIZE))) {
+               return 0;
+       }
 #endif
 
-       return PSCI_E_INVALID_ADDRESS;
+       return -1;
+}
+
+int arm_validate_psci_entrypoint(uintptr_t entrypoint)
+{
+       return arm_validate_ns_entrypoint(entrypoint) == 0 ? PSCI_E_SUCCESS :
+               PSCI_E_INVALID_ADDRESS;
 }
 
 /******************************************************************************
index 4104dd73f029e8a43f7da29fe24b244393e2c4c2..4a615e1c965737f508cffedf1b08e304dd06cde6 100644 (file)
@@ -299,7 +299,7 @@ plat_psci_ops_t plat_arm_psci_pm_ops = {
        .system_off             = css_system_off,
        .system_reset           = css_system_reset,
        .validate_power_state   = css_validate_power_state,
-       .validate_ns_entrypoint = arm_validate_ns_entrypoint,
+       .validate_ns_entrypoint = arm_validate_psci_entrypoint,
        .translate_power_state_by_mpidr = css_translate_power_state_by_mpidr,
        .get_node_hw_state      = css_node_hw_state,
        .get_sys_suspend_power_state = css_get_sys_suspend_power_state,