Commit 57e56bba authored by achingupta's avatar achingupta
Browse files

Merge pull request #301 from soby-mathew/sm/cpu_on_pend_state_fix

PSCI: Set ON_PENDING state early during CPU_ON
Showing with 16 additions and 14 deletions
+16 -14
...@@ -257,31 +257,33 @@ int psci_afflvl_on(unsigned long target_cpu, ...@@ -257,31 +257,33 @@ int psci_afflvl_on(unsigned long target_cpu,
if (psci_spd_pm && psci_spd_pm->svc_on) if (psci_spd_pm && psci_spd_pm->svc_on)
psci_spd_pm->svc_on(target_cpu); psci_spd_pm->svc_on(target_cpu);
/* Perform generic, architecture and platform specific handling. */
rc = psci_call_on_handlers(target_cpu_nodes,
start_afflvl,
end_afflvl,
target_cpu);
assert(rc == PSCI_E_SUCCESS || rc == PSCI_E_INTERN_FAIL);
/* /*
* This function updates the state of each affinity instance * This function updates the state of each affinity instance
* corresponding to the mpidr in the range of affinity levels * corresponding to the mpidr in the range of affinity levels
* specified. * specified.
*/ */
if (rc == PSCI_E_SUCCESS) {
psci_do_afflvl_state_mgmt(start_afflvl, psci_do_afflvl_state_mgmt(start_afflvl,
end_afflvl, end_afflvl,
target_cpu_nodes, target_cpu_nodes,
PSCI_STATE_ON_PENDING); PSCI_STATE_ON_PENDING);
/* /* Perform generic, architecture and platform specific handling. */
* Store the re-entry information for the non-secure world. rc = psci_call_on_handlers(target_cpu_nodes,
*/ start_afflvl,
cm_init_context(target_cpu, ep); end_afflvl,
} target_cpu);
assert(rc == PSCI_E_SUCCESS || rc == PSCI_E_INTERN_FAIL);
if (rc == PSCI_E_SUCCESS)
/* Store the re-entry information for the non-secure world. */
cm_init_context(target_cpu, ep);
else
/* Restore the state on error. */
psci_do_afflvl_state_mgmt(start_afflvl,
end_afflvl,
target_cpu_nodes,
PSCI_STATE_OFF);
exit: exit:
/* /*
* This loop releases the lock corresponding to each affinity level * This loop releases the lock corresponding to each affinity level
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment