Audio dsp recovery using remoteproc

From: noman pouigt
Date: Fri Feb 16 2024 - 18:30:30 EST


mailbox to dsp_1 is currently modeling platform pcm driver.
mailbox to dsp_2 is also doing the same.

Platform driver callbacks cause IPC to be sent to dsp's.
Lifecycle of two dsp's are managed by separate remoteproc
drivers. Single sound card is exposed.

Separate watchdog interrupts from the corresponding dsp's
are connected to remoteproc to manage crashing of the
individual dsp's. How can I restart both the dsp when either
of them crashes using the kernel device model? Remoteproc
driver currently only restarts the crashed dsp instead of restarting
both the dsp. It is needed to bring up the hardware in a consistent
state as both the dsp's are connected to a common hardware.

I thought of making a virtual parent remoteproc device
and then managing individual dsp as a subdevice of that parent device
but remoteproc device node is associated with the individual elf file i.e.
it can manage only a single dsp.

How can I model remoteproc drivers using linux device model so that when either
of them crashes both the dsp's get reloaded by the remoteproc framework.

MailBox ---- DSP_1 ---
| |
Linux ------ common_hw -> speaker/mic
| |
MailBox ---- DSP_2 ---