ASoC: SOF: Intel: ipc4: Ack a received reply or notification separately
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Tue, 18 Oct 2022 12:40:08 +0000 (15:40 +0300)
committerMark Brown <broonie@kernel.org>
Tue, 18 Oct 2022 18:16:45 +0000 (19:16 +0100)
commit010c050fe9ea263e3fc17493822117610a23f662
treec0edc16d331695cae538da5f16d318d88bf9c5f8
parent483e4cdfb502e6bea6b0a226a3ff7c22e60153de
ASoC: SOF: Intel: ipc4: Ack a received reply or notification separately

By acking a received message we tell the DSP that we have processed the
message (reply or notification) and we are open to receive a new one.

The original implementation did this in a common code after the received
message got handled as reply or notification.

With right timing this opens up a small window when we have processed the
reply and let the other thread proceed to send a new message to the DSP,
which is allowed as the DSP is free to receive message.
But when the message is received and processed by the DSP and it wants to
send a reply it will still see that the previous message has not been
acked, so it fails to send a reply. Later the first reply got acked by the
kernel, but it is too late and the in-flight message got a timeout due to
firmware not responding (which it tried, but could not).

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Link: https://lore.kernel.org/r/20221018124008.6846-5-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/cnl.c
sound/soc/sof/intel/hda-ipc.c
sound/soc/sof/intel/mtl.c