Patch "ASoC: SOF: pm: save io region state in case of errors in resume" has been added to the 6.3-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ASoC: SOF: pm: save io region state in case of errors in resume

to the 6.3-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     asoc-sof-pm-save-io-region-state-in-case-of-errors-i.patch
and it can be found in the queue-6.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 543d40ecfef2cb3af4c3d8ac76d4e6535bee9df9
Author: Kai Vehmanen <kai.vehmanen@xxxxxxxxxxxxxxx>
Date:   Fri May 12 13:46:38 2023 +0300

    ASoC: SOF: pm: save io region state in case of errors in resume
    
    [ Upstream commit 171b53be635ac15d4feafeb33946035649b1ca14 ]
    
    If there are failures in DSP runtime resume, the device state will not
    reach active and this makes it impossible e.g. to retrieve a possible
    DSP panic dump via "exception" debugfs node. If
    CONFIG_SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE=y is set, the data in
    cache is stale. If debugfs cache is not used, the region simply cannot
    be read.
    
    To allow debugging these scenarios, update the debugfs cache contents in
    resume error handler. User-space can then later retrieve DSP panic and
    other state via debugfs (requires SOF debugfs cache to be enabled in
    build).
    
    Reported-by: Curtis Malainey <cujomalainey@xxxxxxxxxxxx
    Link: https://github.com/thesofproject/linux/issues/4274
    Signed-off-by: Kai Vehmanen <kai.vehmanen@xxxxxxxxxxxxxxx
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@xxxxxxxxxxxxxxx
    Reviewed-by: Curtis Malainey <cujomalainey@xxxxxxxxxxxx
    Reviewed-by: Péter Ujfalusi <peter.ujfalusi@xxxxxxxxxxxxxxx
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxxxxxxxx
    Link: https://lore.kernel.org/r/20230512104638.21376-1-peter.ujfalusi@xxxxxxxxxxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c
index 85412aeb1ca16..40f392efd8246 100644
--- a/sound/soc/sof/pm.c
+++ b/sound/soc/sof/pm.c
@@ -159,7 +159,7 @@ static int sof_resume(struct device *dev, bool runtime_resume)
 		ret = tplg_ops->set_up_all_pipelines(sdev, false);
 		if (ret < 0) {
 			dev_err(sdev->dev, "Failed to restore pipeline after resume %d\n", ret);
-			return ret;
+			goto setup_fail;
 		}
 	}
 
@@ -173,6 +173,18 @@ static int sof_resume(struct device *dev, bool runtime_resume)
 			dev_err(sdev->dev, "ctx_restore IPC error during resume: %d\n", ret);
 	}
 
+setup_fail:
+#if IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE)
+	if (ret < 0) {
+		/*
+		 * Debugfs cannot be read in runtime suspend, so cache
+		 * the contents upon failure. This allows to capture
+		 * possible DSP coredump information.
+		 */
+		sof_cache_debugfs(sdev);
+	}
+#endif
+
 	return ret;
 }
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux