All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate
@ 2022-06-16 20:18 Pierre-Louis Bossart
  2022-06-16 20:18 ` [PATCH 1/3] ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2 Pierre-Louis Bossart
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Pierre-Louis Bossart @ 2022-06-16 20:18 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai, broonie, Pierre-Louis Bossart

The enablement of IMR-based DSP boot helped reduce resume latency, but
unfortunately the context is not saved in S4 and S5 which leads to
multiple reports of boot failures.

This patchset forces a full firmware reload/reboot when resuming from
S4/S5 and restores functionality.

Pierre-Louis Bossart (3):
  ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2
  ASoC: SOF: pm: add definitions for S4 and S5 states
  ASoC: SOF: Intel: disable IMR boot when resuming from ACPI S4 and S5
    states

 sound/soc/sof/intel/hda-loader.c |  3 ++-
 sound/soc/sof/pm.c               | 21 ++++++++++++++++++++-
 sound/soc/sof/sof-priv.h         |  2 ++
 3 files changed, 24 insertions(+), 2 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/3] ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2
  2022-06-16 20:18 [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Pierre-Louis Bossart
@ 2022-06-16 20:18 ` Pierre-Louis Bossart
  2022-06-16 20:18 ` [PATCH 2/3] ASoC: SOF: pm: add definitions for S4 and S5 states Pierre-Louis Bossart
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Pierre-Louis Bossart @ 2022-06-16 20:18 UTC (permalink / raw)
  To: alsa-devel
  Cc: tiwai, broonie, Péter Ujfalusi, Pierre-Louis Bossart,
	Ranjani Sridharan

The existing code only deals with S0 and S3, let's start adding S1 and S2.

No functional change.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
 sound/soc/sof/pm.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c
index 18eb327a57f03..239f39a5166a4 100644
--- a/sound/soc/sof/pm.c
+++ b/sound/soc/sof/pm.c
@@ -335,8 +335,18 @@ int snd_sof_prepare(struct device *dev)
 		return 0;
 
 #if defined(CONFIG_ACPI)
-	if (acpi_target_system_state() == ACPI_STATE_S0)
+	switch (acpi_target_system_state()) {
+	case ACPI_STATE_S0:
 		sdev->system_suspend_target = SOF_SUSPEND_S0IX;
+		break;
+	case ACPI_STATE_S1:
+	case ACPI_STATE_S2:
+	case ACPI_STATE_S3:
+		sdev->system_suspend_target = SOF_SUSPEND_S3;
+		break;
+	default:
+		break;
+	}
 #endif
 
 	return 0;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/3] ASoC: SOF: pm: add definitions for S4 and S5 states
  2022-06-16 20:18 [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Pierre-Louis Bossart
  2022-06-16 20:18 ` [PATCH 1/3] ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2 Pierre-Louis Bossart
@ 2022-06-16 20:18 ` Pierre-Louis Bossart
  2022-06-16 20:18 ` [PATCH 3/3] ASoC: SOF: Intel: disable IMR boot when resuming from ACPI " Pierre-Louis Bossart
  2022-06-17 23:19 ` [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Pierre-Louis Bossart @ 2022-06-16 20:18 UTC (permalink / raw)
  To: alsa-devel
  Cc: tiwai, broonie, Péter Ujfalusi, Pierre-Louis Bossart,
	Ranjani Sridharan

We currently don't have a means to differentiate between S3, S4 and
S5. Add definitions so that we have select different code paths
depending on the target state in follow-up patches.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
 sound/soc/sof/pm.c       | 9 +++++++++
 sound/soc/sof/sof-priv.h | 2 ++
 2 files changed, 11 insertions(+)

diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c
index 239f39a5166a4..df740be645e84 100644
--- a/sound/soc/sof/pm.c
+++ b/sound/soc/sof/pm.c
@@ -23,6 +23,9 @@ static u32 snd_sof_dsp_power_target(struct snd_sof_dev *sdev)
 	u32 target_dsp_state;
 
 	switch (sdev->system_suspend_target) {
+	case SOF_SUSPEND_S5:
+	case SOF_SUSPEND_S4:
+		/* DSP should be in D3 if the system is suspending to S3+ */
 	case SOF_SUSPEND_S3:
 		/* DSP should be in D3 if the system is suspending to S3 */
 		target_dsp_state = SOF_DSP_PM_D3;
@@ -344,6 +347,12 @@ int snd_sof_prepare(struct device *dev)
 	case ACPI_STATE_S3:
 		sdev->system_suspend_target = SOF_SUSPEND_S3;
 		break;
+	case ACPI_STATE_S4:
+		sdev->system_suspend_target = SOF_SUSPEND_S4;
+		break;
+	case ACPI_STATE_S5:
+		sdev->system_suspend_target = SOF_SUSPEND_S5;
+		break;
 	default:
 		break;
 	}
diff --git a/sound/soc/sof/sof-priv.h b/sound/soc/sof/sof-priv.h
index 52396f38dcec2..8bbc94907c624 100644
--- a/sound/soc/sof/sof-priv.h
+++ b/sound/soc/sof/sof-priv.h
@@ -91,6 +91,8 @@ enum sof_system_suspend_state {
 	SOF_SUSPEND_NONE = 0,
 	SOF_SUSPEND_S0IX,
 	SOF_SUSPEND_S3,
+	SOF_SUSPEND_S4,
+	SOF_SUSPEND_S5,
 };
 
 enum sof_dfsentry_type {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/3] ASoC: SOF: Intel: disable IMR boot when resuming from ACPI S4 and S5 states
  2022-06-16 20:18 [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Pierre-Louis Bossart
  2022-06-16 20:18 ` [PATCH 1/3] ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2 Pierre-Louis Bossart
  2022-06-16 20:18 ` [PATCH 2/3] ASoC: SOF: pm: add definitions for S4 and S5 states Pierre-Louis Bossart
@ 2022-06-16 20:18 ` Pierre-Louis Bossart
  2022-06-17 23:19 ` [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Pierre-Louis Bossart @ 2022-06-16 20:18 UTC (permalink / raw)
  To: alsa-devel
  Cc: tiwai, broonie, Péter Ujfalusi, Pierre-Louis Bossart,
	Ranjani Sridharan

The IMR was assumed to be preserved when suspending to S4 and S5
states, but community reports invalidate that assumption, the hardware
seems to be powered off and the IMR memory content cleared.

Make sure regular boot with firmware download is used for S4 and S5.

BugLink: https://github.com/thesofproject/sof/issues/5892
Fixes: 5fb5f51185126 ("ASoC: SOF: Intel: hda-loader: add IMR restore support")
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
 sound/soc/sof/intel/hda-loader.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/soc/sof/intel/hda-loader.c b/sound/soc/sof/intel/hda-loader.c
index bca9dc5917f42..819b3b08c6557 100644
--- a/sound/soc/sof/intel/hda-loader.c
+++ b/sound/soc/sof/intel/hda-loader.c
@@ -395,7 +395,8 @@ int hda_dsp_cl_boot_firmware(struct snd_sof_dev *sdev)
 	struct snd_dma_buffer dmab;
 	int ret, ret1, i;
 
-	if (hda->imrboot_supported && !sdev->first_boot) {
+	if (sdev->system_suspend_target < SOF_SUSPEND_S4 &&
+	    hda->imrboot_supported && !sdev->first_boot) {
 		dev_dbg(sdev->dev, "IMR restore supported, booting from IMR directly\n");
 		hda->boot_iteration = 0;
 		ret = hda_dsp_boot_imr(sdev);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate
  2022-06-16 20:18 [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Pierre-Louis Bossart
                   ` (2 preceding siblings ...)
  2022-06-16 20:18 ` [PATCH 3/3] ASoC: SOF: Intel: disable IMR boot when resuming from ACPI " Pierre-Louis Bossart
@ 2022-06-17 23:19 ` Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2022-06-17 23:19 UTC (permalink / raw)
  To: pierre-louis.bossart, alsa-devel; +Cc: tiwai

On Thu, 16 Jun 2022 15:18:15 -0500, Pierre-Louis Bossart wrote:
> The enablement of IMR-based DSP boot helped reduce resume latency, but
> unfortunately the context is not saved in S4 and S5 which leads to
> multiple reports of boot failures.
> 
> This patchset forces a full firmware reload/reboot when resuming from
> S4/S5 and restores functionality.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/3] ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2
      commit: 6639990dbb25257eeb3df4d03e38e7d26c2484ab
[2/3] ASoC: SOF: pm: add definitions for S4 and S5 states
      commit: 7a5974e035a6d496797547e4b469bc88938343c2
[3/3] ASoC: SOF: Intel: disable IMR boot when resuming from ACPI S4 and S5 states
      commit: 58ecb11eab44dd5d64e35664ac4d62fecb6328f4

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-06-17 23:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-16 20:18 [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Pierre-Louis Bossart
2022-06-16 20:18 ` [PATCH 1/3] ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2 Pierre-Louis Bossart
2022-06-16 20:18 ` [PATCH 2/3] ASoC: SOF: pm: add definitions for S4 and S5 states Pierre-Louis Bossart
2022-06-16 20:18 ` [PATCH 3/3] ASoC: SOF: Intel: disable IMR boot when resuming from ACPI " Pierre-Louis Bossart
2022-06-17 23:19 ` [PATCH 0/3] ASoC: SOF: Intel: fix resume from hibernate Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.