The latest RPi firmware leaves secondary cores in a wait-for-event (WFE)
state to save power, so after writing the entry point address for a core to the mailbox, use a dsb() to synchronize the execution pipeline to the data written, then use an sev() to wake up the core. Submitted by: Sylvain Garrigues <sylgar@gmail.com>
This commit is contained in:
parent
b906cdafe6
commit
50b4d9a8b0
@ -117,7 +117,9 @@ bcm2836_mp_start_ap(platform_t plat)
|
||||
/* set entry point to mailbox 3 */
|
||||
BSWR4(MBOX3SET_CORE(i),
|
||||
(uint32_t)pmap_kextract((vm_offset_t)mpentry));
|
||||
wmb();
|
||||
/* Firmware put cores in WFE state, need SEV to wake up. */
|
||||
dsb();
|
||||
sev();
|
||||
|
||||
/* wait for bootup */
|
||||
retry = 1000;
|
||||
|
Loading…
Reference in New Issue
Block a user