zephyr/soc/xtensa/intel_adsp
Andy Ross 43d1d15da8 soc/intel_adsp: Remove interrupt masking from secondary core startup
There is some legacy code that tries to mask IDC interrupts when
starting up cores.  This is there because the IDC interrupt is both
the system IPI when Zephyr is running (and can thus be signaled
asynchronously to the code calling arch_start_cpu()) and the messaging
protocol to the boot ROM on the other CPU.  So the idea is that we
mask interrupts after startup so nothing is confused.

But that's needless in the current architecture.  We maintain a
synchronized cpus_active[] record that will show true/active for any
CPU between the end of its SMP startup sequence and the beginning of
the shutdown process in soc_halt_cpu(), and false at all other times.
An IPI will never be sent to a CPU that is running in the boot ROM,
because such a CPU will be flagged as inactive.  Likewise a ROM
startup IDC will never be sent to a CPU running Zephyr code for the
converse reason.  Remove all that code.

Unfortunately SOF itself still needs an interrupt unmask step at CPU
startup, because it's still doing its own masking (probably according
to the same algorithm that we imported).  Leave that in place as a
minimal workaround until we get that fixed upstream.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-12-07 12:09:02 -05:00
..
cavs_v15 soc/intel_adsp_cavs15: Use new IDC driver 2021-12-07 12:09:02 -05:00
cavs_v18 soc/intel_adsp_cavs18: Use new IDC driver 2021-12-07 12:09:02 -05:00
cavs_v20 soc/intel_adsp_cavs20: Use new IDC driver 2021-12-07 12:09:02 -05:00
cavs_v25 soc: cavs_v25: increase core count default to 4 2021-12-02 23:56:27 -05:00
common soc/intel_adsp: Remove interrupt masking from secondary core startup 2021-12-07 12:09:02 -05:00
CMakeLists.txt xtensa: set toolchain variant per SoC 2020-12-20 14:30:50 -05:00
Kconfig soc/intel_adsp: Unify boot loader memory layout 2021-11-23 13:23:54 -05:00
Kconfig.defconfig
Kconfig.soc