From: Bard Liao <yung-chuan.liao@linux.intel.com> To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, tiwai@suse.de, broonie@kernel.org, gregkh@linuxfoundation.org, jank@cadence.com, srinivas.kandagatla@linaro.org, rander.wang@linux.intel.com, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, pierre-louis.bossart@linux.intel.com, sanyog.r.kale@intel.com, slawomir.blauciak@intel.com, mengdong.lin@intel.com, bard.liao@intel.com Subject: [PATCH 04/13] soundwire: intel: fix race condition on system resume Date: Wed, 22 Jul 2020 04:37:14 +0800 [thread overview] Message-ID: <20200721203723.18305-5-yung-chuan.liao@linux.intel.com> (raw) In-Reply-To: <20200721203723.18305-1-yung-chuan.liao@linux.intel.com> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Previous patches took care of the case where the master device is pm_runtime 'suspended' when a system suspend occurs. In the case where the master device was not suspended, e.g. if suspend occurred while streaming audio, Intel validation noticed a race condition: the pm_runtime suspend may conflict with the enumeration started by the system resume. This can be simply fixed by updating the status before exiting system resume. GitHub issue: https://github.com/thesofproject/linux/issues/1482 Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> --- drivers/soundwire/intel.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index 284e5c9d240a..b7d8ea6b331e 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -1531,6 +1531,18 @@ static int intel_resume(struct device *dev) return ret; } + /* + * after system resume, the pm_runtime suspend() may kick in + * during the enumeration, before any children device force the + * master device to remain active. Using pm_runtime_get() + * routines is not really possible, since it'd prevent the + * master from suspending. + * A reasonable compromise is to update the pm_runtime + * counters and delay the pm_runtime suspend by several + * seconds, by when all enumeration should be complete. + */ + pm_runtime_mark_last_busy(dev); + return ret; } -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Bard Liao <yung-chuan.liao@linux.intel.com> To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: pierre-louis.bossart@linux.intel.com, vinod.koul@linaro.org, tiwai@suse.de, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, broonie@kernel.org, srinivas.kandagatla@linaro.org, jank@cadence.com, mengdong.lin@intel.com, slawomir.blauciak@intel.com, sanyog.r.kale@intel.com, rander.wang@linux.intel.com, bard.liao@intel.com Subject: [PATCH 04/13] soundwire: intel: fix race condition on system resume Date: Wed, 22 Jul 2020 04:37:14 +0800 [thread overview] Message-ID: <20200721203723.18305-5-yung-chuan.liao@linux.intel.com> (raw) In-Reply-To: <20200721203723.18305-1-yung-chuan.liao@linux.intel.com> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Previous patches took care of the case where the master device is pm_runtime 'suspended' when a system suspend occurs. In the case where the master device was not suspended, e.g. if suspend occurred while streaming audio, Intel validation noticed a race condition: the pm_runtime suspend may conflict with the enumeration started by the system resume. This can be simply fixed by updating the status before exiting system resume. GitHub issue: https://github.com/thesofproject/linux/issues/1482 Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> --- drivers/soundwire/intel.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index 284e5c9d240a..b7d8ea6b331e 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -1531,6 +1531,18 @@ static int intel_resume(struct device *dev) return ret; } + /* + * after system resume, the pm_runtime suspend() may kick in + * during the enumeration, before any children device force the + * master device to remain active. Using pm_runtime_get() + * routines is not really possible, since it'd prevent the + * master from suspending. + * A reasonable compromise is to update the pm_runtime + * counters and delay the pm_runtime suspend by several + * seconds, by when all enumeration should be complete. + */ + pm_runtime_mark_last_busy(dev); + return ret; } -- 2.17.1
next prev parent reply other threads:[~2020-07-22 8:32 UTC|newest] Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-21 20:37 [PATCH 00/13] soundwire: intel: add power management support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 01/13] soundwire: intel: Add basic " Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 02/13] soundwire: intel: add pm_runtime support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 03/13] soundwire: intel: reset pm_runtime status during system resume Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-08-17 11:19 ` Vinod Koul 2020-08-17 11:19 ` Vinod Koul 2020-07-21 20:37 ` Bard Liao [this message] 2020-07-21 20:37 ` [PATCH 04/13] soundwire: intel: fix race condition on " Bard Liao 2020-07-21 20:37 ` [PATCH 05/13] soundwire: intel: call helper to reset Slave states on resume Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 06/13] soundwire: intel: reinitialize IP+DSP in .prepare(), but only when resuming Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 07/13] soundwire: intel: pm_runtime idle scheduling Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 08/13] soundwire: intel: add CLK_STOP_TEARDOWN for pm_runtime suspend Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 09/13] soundwire: intel: add CLK_STOP_BUS_RESET support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-08-17 11:47 ` Vinod Koul 2020-08-17 11:47 ` Vinod Koul 2020-08-17 14:30 ` Pierre-Louis Bossart 2020-08-17 14:30 ` Pierre-Louis Bossart 2020-08-18 6:27 ` Vinod Koul 2020-08-18 6:27 ` Vinod Koul 2020-07-21 20:37 ` [PATCH 10/13] soundwire: intel: add CLK_STOP_NOT_ALLOWED support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 11/13] soundwire: intel_init: handle power rail dependencies for clock stop mode Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 12/13] soundwire: intel: support clock_stop mode without quirks Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 13/13] soundwire: intel: refine runtime pm for SDW_INTEL_CLK_STOP_BUS_RESET Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-08-17 12:08 ` [PATCH 00/13] soundwire: intel: add power management support Vinod Koul 2020-08-17 12:08 ` Vinod Koul 2020-08-17 14:46 ` Pierre-Louis Bossart 2020-08-17 16:10 ` Pierre-Louis Bossart 2020-08-18 6:29 ` Vinod Koul 2020-08-18 6:29 ` Vinod Koul
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200721203723.18305-5-yung-chuan.liao@linux.intel.com \ --to=yung-chuan.liao@linux.intel.com \ --cc=alsa-devel@alsa-project.org \ --cc=bard.liao@intel.com \ --cc=broonie@kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=hui.wang@canonical.com \ --cc=jank@cadence.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mengdong.lin@intel.com \ --cc=pierre-louis.bossart@linux.intel.com \ --cc=rander.wang@linux.intel.com \ --cc=ranjani.sridharan@linux.intel.com \ --cc=sanyog.r.kale@intel.com \ --cc=slawomir.blauciak@intel.com \ --cc=srinivas.kandagatla@linaro.org \ --cc=tiwai@suse.de \ --cc=vinod.koul@linaro.org \ --cc=vkoul@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.