Unverified Commit 72b8ed83 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown
Browse files

ASoC: SOF: ops: Use dev_warn() if the panic offsets differ



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: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20211223113628.18582-2-peter.ujfalusi@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 37daf8d9
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -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;