diff --git a/soc/xtensa/intel_adsp/common/soc_mp.c b/soc/xtensa/intel_adsp/common/soc_mp.c index 1d10d77f868..4997bfba999 100644 --- a/soc/xtensa/intel_adsp/common/soc_mp.c +++ b/soc/xtensa/intel_adsp/common/soc_mp.c @@ -421,7 +421,7 @@ void idc_isr(void *param) * CPU". */ for (int i = 0; i < CONFIG_MP_NUM_CPUS; i++) { - IDC[start_rec.cpu].core[i].tfc = BIT(31); + IDC[prid()].core[i].tfc = BIT(31); } } @@ -456,6 +456,15 @@ void soc_idc_init(void) CAVS_INTCTRL[core].l2.clear = CAVS_L2_IDC; } + + /* Clear out any existing pending interrupts that might be present */ + for (int i = 0; i < CONFIG_MP_NUM_CPUS; i++) { + for (int j = 0; j < CONFIG_MP_NUM_CPUS; j++) { + IDC[i].core[j].tfc = BIT(31); + } + } + + cpus_active[0] = true; } /**