Skip to content

Commit e41cd58

Browse files
committed
idc: core boot: relax the idc wait to allow other cores access to IO
Currently idc_wait_in_blocking_mode() spins and reads timer and mailbox IO which can slow down secondary core boot (which share the physical resources). Relax the IO to speed up booting of secondary cores. Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
1 parent c4cad5e commit e41cd58

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/idc/idc.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <sof/lib/notifier.h>
1717
#include <sof/lib/uuid.h>
1818
#include <sof/platform.h>
19+
#include <arch/lib/wait.h>
1920
#include <sof/schedule/edf_schedule.h>
2021
#include <sof/schedule/ll_schedule.h>
2122
#include <sof/schedule/schedule.h>
@@ -93,6 +94,10 @@ int idc_wait_in_blocking_mode(uint32_t target_core, bool (*cond)(int))
9394
IDC_TIMEOUT / 1000;
9495

9596
while (!cond(target_core)) {
97+
98+
/* spin here so other core can access IO and timers freely */
99+
idelay(8192);
100+
96101
if (deadline < platform_timer_get(timer)) {
97102
/* safe check in case we've got preempted
98103
* after read

0 commit comments

Comments
 (0)