ASoC: SOF: ops: Use dev_warn() if the panic offsets differ
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Thu, 23 Dec 2021 11:36:09 +0000 (13:36 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 23 Dec 2021 13:38:08 +0000 (13:38 +0000)
Catch the cases when the stored sdev->dsp_oops_offset and the offset
received via the panic message differs and print a warning, but keep using
the dsp_oops_offset for the oops query.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20211223113628.18582-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/ops.c

index 160b88a2d59f63d5235522cd179c2cf2b7c82f90..1d6a95a00cf59ae9e5e071c194d74a294e30d712 100644 (file)
@@ -144,18 +144,23 @@ EXPORT_SYMBOL(snd_sof_dsp_update_bits_forced);
 
 void snd_sof_dsp_panic(struct snd_sof_dev *sdev, u32 offset)
 {
-       dev_err(sdev->dev, "error : DSP panic!\n");
-
        /*
-        * check if DSP is not ready and did not set the dsp_oops_offset.
-        * if the dsp_oops_offset is not set, set it from the panic message.
-        * Also add a check to memory window setting with panic message.
+        * if DSP is not ready and the dsp_oops_offset is not yet set, use the
+        * offset from the panic message.
         */
        if (!sdev->dsp_oops_offset)
                sdev->dsp_oops_offset = offset;
-       else
-               dev_dbg(sdev->dev, "panic: dsp_oops_offset %zu offset %d\n",
-                       sdev->dsp_oops_offset, offset);
+
+       /*
+        * Print warning if the offset from the panic message differs from
+        * dsp_oops_offset
+        */
+       if (sdev->dsp_oops_offset != offset)
+               dev_warn(sdev->dev,
+                        "%s: dsp_oops_offset %zu differs from panic offset %u\n",
+                        __func__, sdev->dsp_oops_offset, offset);
+
+       dev_err(sdev->dev, "DSP panic!\n");
 
        /* We want to see the DSP panic! */
        sdev->dbg_dump_printed = false;