The DSP firmwares expect the downstream IPC-router flooding model: a
node never sends NEW_LOOKUP for a service hosted on a peer node and
relies on the application processor pushing every NEW_SERVER/DEL_SERVER
to every link. Mainline's name service only broadcasts local servers;
remote servers reach other remote nodes solely via persistent lookups
nobody in the firmware issues.
Observed on the FP6 (SM7635): at boot the modem queries the in-kernel
pd-mapper for 'avs/audio' and receives 'msm/adsp/audio_pd' instance 74,
but never contacts the ADSP's service-registry notifier (svc 66 inst 74,
node 5 port 2) because it was never told that service exists - zero
forwarded modem->adsp packets across a full modem boot with the
forwarding path instrumented. Without the avs/audio-up notification the
modem's Voice Services never creates a vocoder session (empty
placeholder encoder/decoder during live VoLTE calls AND CVD loopback,
journal/calls.md sessions 15/16).
A first version of this patch flooded every remote announcement to every
hello'd node, downstream-style; it wedged the phone within ~20 s of the
DSPs booting, recurring in waves (control packets are exempt from qrtr
flow control, so any echo between routers runs unbounded, and DSP
crash/recovery cycles re-trigger it). Push only the one edge voice
needs instead: ADSP-hosted servers, to the modem, both live (new/del)
and replayed when the modem says HELLO. Any echo is structurally
loop-free: a re-announcement arriving from the modem is pushed to
nobody (target == origin). Pairs with the data-path forwarding carry
0c63174949.
Assisted-by: Claude:claude-fable-5
Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>