SOF isn't an SMP system, its use of cores is hard-wired. Most management tasks are only supposed to run on the primary core, only pre-assigned audio processing tasks should run on secondary cores. One of such management tasks is the EDF scheduler work handler. To fix it to the primary core a special work queue is created, which is set to only run on the primary core, and the delayed work, implementing the scheduler, is submitted to that queue.
Whereas the IPC delayed work is run on the default work queue, which on Zephyr can run on any core.
Expected behavior
The IPC delayed work should only run on the primary core.
Impact
Running on a secondary core without proper code synchronisation can lead to data corruption.
Describe the bug
SOF isn't an SMP system, its use of cores is hard-wired. Most management tasks are only supposed to run on the primary core, only pre-assigned audio processing tasks should run on secondary cores. One of such management tasks is the EDF scheduler work handler. To fix it to the primary core a special work queue is created, which is set to only run on the primary core, and the delayed work, implementing the scheduler, is submitted to that queue.
Whereas the IPC delayed work is run on the default work queue, which on Zephyr can run on any core.
Expected behavior
The IPC delayed work should only run on the primary core.
Impact
Running on a secondary core without proper code synchronisation can lead to data corruption.