mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-23 13:36:05 +00:00
psci: rework cpu_off assertion and minor cleanups
This patch: 1. removes a duplicate assertion to check that the only error condition that can be returned while turning a cpu off is PSCI_E_DENIED. Having this assertion after calling psci_afflvl_off() is sufficient. 2. corrects some incorrect usage of 'its' vs 'it is' 3. removes some unwanted white spaces Change-Id: Icf014e269b54f5be5ce0b9fbe6b41258e4ebf403
This commit is contained in:
parent
2d94d4a0be
commit
3140a9e5c7
6 changed files with 16 additions and 25 deletions
|
@ -91,13 +91,6 @@ static int psci_afflvl0_off(unsigned long mpidr, aff_map_node *cpu_node)
|
|||
plat_state);
|
||||
}
|
||||
|
||||
/*
|
||||
* The only error cpu_off can return is E_DENIED. So check if that's
|
||||
* indeed the case. The caller will simply 'eret' in case of an error.
|
||||
*/
|
||||
if (rc != PSCI_E_SUCCESS)
|
||||
assert(rc == PSCI_E_DENIED);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -123,7 +116,7 @@ static int psci_afflvl1_off(unsigned long mpidr, aff_map_node *cluster_node)
|
|||
dcsw_op_all(DCCISW);
|
||||
|
||||
/*
|
||||
* Plat. Management. Allow the platform to do it's cluster
|
||||
* Plat. Management. Allow the platform to do its cluster
|
||||
* specific bookeeping e.g. turn off interconnect coherency,
|
||||
* program the power controller etc.
|
||||
*/
|
||||
|
@ -152,7 +145,7 @@ static int psci_afflvl2_off(unsigned long mpidr, aff_map_node *system_node)
|
|||
/* No arch. and generic bookeeping to do here currently */
|
||||
|
||||
/*
|
||||
* Plat. Management : Allow the platform to do it's bookeeping
|
||||
* Plat. Management : Allow the platform to do its bookeeping
|
||||
* at this affinity level
|
||||
*/
|
||||
if (psci_plat_pm_ops->affinst_off)
|
||||
|
|
|
@ -333,7 +333,7 @@ static unsigned int psci_afflvl0_on_finish(unsigned long mpidr,
|
|||
/*
|
||||
* Generic management: Now we just need to retrieve the
|
||||
* information that we had stashed away during the cpu_on
|
||||
* call to set this cpu on it's way. First get the index
|
||||
* call to set this cpu on its way. First get the index
|
||||
* for restoring the re-entry info
|
||||
*/
|
||||
index = cpu_node->data;
|
||||
|
|
|
@ -153,7 +153,7 @@ static int psci_afflvl1_suspend(unsigned long mpidr,
|
|||
dcsw_op_all(DCCISW);
|
||||
|
||||
/*
|
||||
* Plat. Management. Allow the platform to do it's cluster
|
||||
* Plat. Management. Allow the platform to do its cluster
|
||||
* specific bookeeping e.g. turn off interconnect coherency,
|
||||
* program the power controller etc.
|
||||
*/
|
||||
|
@ -166,7 +166,6 @@ static int psci_afflvl1_suspend(unsigned long mpidr,
|
|||
* platform handler prototype the same.
|
||||
*/
|
||||
psci_entrypoint = (unsigned long) psci_aff_suspend_finish_entry;
|
||||
|
||||
rc = psci_plat_pm_ops->affinst_suspend(mpidr,
|
||||
psci_entrypoint,
|
||||
ns_entrypoint,
|
||||
|
@ -198,7 +197,7 @@ static int psci_afflvl2_suspend(unsigned long mpidr,
|
|||
plat_state = psci_get_aff_phys_state(system_node);
|
||||
|
||||
/*
|
||||
* Plat. Management : Allow the platform to do it's bookeeping
|
||||
* Plat. Management : Allow the platform to do its bookeeping
|
||||
* at this affinity level
|
||||
*/
|
||||
if (psci_plat_pm_ops->affinst_suspend) {
|
||||
|
@ -210,7 +209,6 @@ static int psci_afflvl2_suspend(unsigned long mpidr,
|
|||
* platform handler prototype the same.
|
||||
*/
|
||||
psci_entrypoint = (unsigned long) psci_aff_suspend_finish_entry;
|
||||
|
||||
rc = psci_plat_pm_ops->affinst_suspend(mpidr,
|
||||
psci_entrypoint,
|
||||
ns_entrypoint,
|
||||
|
@ -387,7 +385,7 @@ static unsigned int psci_afflvl0_suspend_finish(unsigned long mpidr,
|
|||
/*
|
||||
* Generic management: Now we just need to retrieve the
|
||||
* information that we had stashed away during the suspend
|
||||
* call to set this cpu on it's way.
|
||||
* call to set this cpu on its way.
|
||||
*/
|
||||
psci_get_ns_entry_info(index);
|
||||
|
||||
|
|
|
@ -196,7 +196,7 @@ int psci_change_state(unsigned long mpidr,
|
|||
/*******************************************************************************
|
||||
* This routine does the heavy lifting for psci_change_state(). It examines the
|
||||
* state of each affinity instance at the next lower affinity level and decides
|
||||
* it's final state accordingly. If a lower affinity instance is ON then the
|
||||
* its final state accordingly. If a lower affinity instance is ON then the
|
||||
* higher affinity instance is ON. If all the lower affinity instances are OFF
|
||||
* then the higher affinity instance is OFF. If atleast one lower affinity
|
||||
* instance is SUSPENDED then the higher affinity instance is SUSPENDED. If only
|
||||
|
@ -210,7 +210,7 @@ unsigned int psci_calculate_affinity_state(aff_map_node *aff_node)
|
|||
unsigned long tempidr;
|
||||
aff_map_node *lo_aff_node;
|
||||
|
||||
/* Cannot calculate lowest affinity state. It's simply assigned */
|
||||
/* Cannot calculate lowest affinity state. It is simply assigned */
|
||||
assert(aff_node->level > MPIDR_AFFLVL0);
|
||||
|
||||
/*
|
||||
|
@ -248,7 +248,7 @@ unsigned int psci_calculate_affinity_state(aff_map_node *aff_node)
|
|||
|
||||
/*
|
||||
* At least one X-1 needs to be suspended for X to be suspended
|
||||
* but it's effectively on for the affinity_info call.
|
||||
* but it is effectively on for the affinity_info call.
|
||||
* SUSPEND > ON_PENDING > OFF.
|
||||
*/
|
||||
case PSCI_STATE_SUSPEND:
|
||||
|
@ -424,8 +424,8 @@ int psci_set_ns_entry_info(unsigned int index,
|
|||
|
||||
/*******************************************************************************
|
||||
* An affinity level could be on, on_pending, suspended or off. These are the
|
||||
* logical states it can be in. Physically either it's off or on. When it's in
|
||||
* the state on_pending then it's about to be turned on. It's not possible to
|
||||
* logical states it can be in. Physically either it is off or on. When it is in
|
||||
* the state on_pending then it is about to be turned on. It is not possible to
|
||||
* tell whether that's actually happenned or not. So we err on the side of
|
||||
* caution & treat the affinity level as being turned off.
|
||||
******************************************************************************/
|
||||
|
|
|
@ -122,9 +122,11 @@ int psci_cpu_off(void)
|
|||
*/
|
||||
rc = psci_afflvl_off(mpidr, target_afflvl, MPIDR_AFFLVL0);
|
||||
|
||||
if (rc != PSCI_E_SUCCESS) {
|
||||
assert(rc == PSCI_E_DENIED);
|
||||
}
|
||||
/*
|
||||
* The only error cpu_off can return is E_DENIED. So check if that's
|
||||
* indeed the case.
|
||||
*/
|
||||
assert (rc == PSCI_E_SUCCESS || rc == PSCI_E_DENIED);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -171,6 +171,4 @@ CASSERT(GPREGS_FP_OFF == __builtin_offsetof(gp_regs, fp), \
|
|||
extern void runtime_svc_init(unsigned long mpidr);
|
||||
|
||||
#endif /*__ASSEMBLY__*/
|
||||
|
||||
|
||||
#endif /* __RUNTIME_SVC_H__ */
|
||||
|
|
Loading…
Add table
Reference in a new issue