Commit dd9233d0 authored by Paul Burton's avatar Paul Burton

MIPS: smp-cps: use CPC core-other locking

The core which the CPC core-other region relates to is based upon the
core-local core-other addressing register. As its name suggests this
register is shared between all VPEs within a core, and if there is a
possibility that multiple VPEs within a core will attempt to access
another core simultaneously then locking is required. This wasn't
previously a problem with the only user being cpu0 during boot, but will
be an issue once hotplug is implemented & may race with other users such
as cpuidle.
Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
parent 0f4d3d11
...@@ -161,11 +161,10 @@ static void boot_core(unsigned core) ...@@ -161,11 +161,10 @@ static void boot_core(unsigned core)
write_gcr_access(access); write_gcr_access(access);
if (mips_cpc_present()) { if (mips_cpc_present()) {
/* Select the appropriate core */
write_cpc_cl_other(core << CPC_Cx_OTHER_CORENUM_SHF);
/* Reset the core */ /* Reset the core */
mips_cpc_lock_other(core);
write_cpc_co_cmd(CPC_Cx_CMD_RESET); write_cpc_co_cmd(CPC_Cx_CMD_RESET);
mips_cpc_unlock_other();
} else { } else {
/* Take the core out of reset */ /* Take the core out of reset */
write_gcr_co_reset_release(0); write_gcr_co_reset_release(0);
......
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