Only flush bp_kernload from the dcache, no need to sync the icache on the boot CPU.

__syncicache() only syncs the icache on the current CPU, it doesn't touch the
cache on any other core.  Replace the call with cpu_flush_dcache() instead.
Since bp_kernload is not touched again by the boot CPU in this code path, dcbf
is no less efficient than the dcbst from __syncicache() by invalidating the
cache line.
This commit is contained in:
Justin Hibbits 2016-08-14 03:49:37 +00:00
parent da974ed4ab
commit 7599d2ddad

View File

@ -404,7 +404,7 @@ mpc85xx_smp_start_cpu(platform_t plat, struct pcpu *pc)
* bp_kernload is in the boot page. Sync the cache because ePAPR
* booting has the other core(s) already running.
*/
__syncicache(&bp_kernload, sizeof(bp_kernload));
cpu_flush_dcache(&bp_kernload, sizeof(bp_kernload));
ap_pcpu = pc;
__asm __volatile("msync; isync");