zephyr/soc/xtensa
Andy Ross 67a47445eb soc: intel_adsp: Fix IDC masking & state issues
Fix various bugs with the new IDC layer that show up in edge cases
where code relies on correct timing of IPIs (unsurprisingly there is a
lot of code that recovers anyway even if the IPI doesn't arrive
promptly).  Leaving this as a separate patch because the prior code in
the PR has already been reviewed and it "mostly" worked:

The unmasking of the L2 interrupt bit (remember there are three layers
of masking of the IDC interrupt) was always operating on CPU0 at CPU
startup because the code had been copied blindly.  Unmask the CPU
we're actually launching.  It turns out cAVS 2.x re-masks this on CPU
launch automatically.

The global init code to unmask all these interrupts at startup had the
same bug, even though it turned out to be needless (the initialization
state has it unmasked until it turns it back off).  Do it right
anyway.  Similarly add code to clear out existing interrupt latch
state by ACKing all IDC interrupts at startup.  Seems needless, but
behavior isn't documented so let's be safe.

Flag CPU0 as always "active" for the purposes of IPIs.  Forgot to do
this earlier, oops.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-09-03 07:19:34 -04:00
..
esp32 soc: esp32: Fix placement for system heap 2021-08-31 15:36:12 -04:00
esp32s2 esp32s2: drivers: gpio: add gpio support 2021-08-27 17:34:41 -04:00
intel_adsp soc: intel_adsp: Fix IDC masking & state issues 2021-09-03 07:19:34 -04:00
intel_s1000 linker: xtensa: move IDT_LIST region 2021-08-25 18:08:36 -04:00
nxp_adsp arch: xtensa: modify asm for interrupt sections 2021-08-28 23:27:02 -04:00
sample_controller linker: align _image_text_start/end/size linker symbols name 2021-08-28 08:48:03 -04:00
CMakeLists.txt soc/xtensa/intel_adsp: Upstream updates 2020-10-21 06:38:53 -04:00