All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Mark Brown <broonie@kernel.org>
Cc: alsa-devel@alsa-project.org, tiwai@suse.de,
	"Péter Ujfalusi" <peter.ujfalusi@linux.intel.com>,
	"Ranjani Sridharan" <ranjani.sridharan@linux.intel.com>,
	"Rander Wang" <rander.wang@intel.com>,
	vkoul@kernel.org, "Bard Liao" <yung-chuan.liao@linux.intel.com>
Subject: Re: [PATCH 2/2] ASoC: codecs: soundwire: call pm_runtime_resume() in component probe
Date: Fri, 17 Jun 2022 09:35:26 -0500	[thread overview]
Message-ID: <1ddc85ea-4e40-eb07-ee5b-8bc58514223d@linux.intel.com> (raw)
In-Reply-To: <YqxNEjG19K/RbbFM@sirena.org.uk>



On 6/17/22 04:44, Mark Brown wrote:
> On Thu, Jun 16, 2022 at 04:08:25PM -0500, Pierre-Louis Bossart wrote:
> 
>> Make sure that the bus and codecs are pm_runtime active when the card
>> is registered/created. This avoid timeouts when accessing registers.
> 
>> +static int max98373_sdw_probe(struct snd_soc_component *component)
>> +{
>> +	int ret;
>> +
>> +	ret = pm_runtime_resume(component->dev);
>> +	if (ret < 0 && ret != -EACCES)
>> +		return ret;
> 
> I'm not clear what the issue is here.  Is something that's accessing the
> registers forgetting to do a pm_runtime_get(), or doing that rather than
> using pm_runtime_get_sync()?  This doesn't feel safe or robust.

The context is that I have been trying to remove all timing dependencies
between components, and make sure that you can bind/unbind drivers in
any order, with the deferred probe making sure that all required
components are already probed. I started this after seeing reports of
kernel oopses when the machine driver was removed, and realizing that
the SoundWire bus itself didn't support bind/unbind tests by design.

In the case where you bind the machine driver after a delay, then the
bus might be suspended already, and there are cases where we see
timeouts for registers that are not regmap-managed (usually
vendor-specific stuff with an indirection mechanism), and even for
regmap the register read-write are cache-based when the bus is suspended.

What this patch does it make sure that the bus is operation when the
card is created. In usual cases, this is a no-op, this just helps with
corner test cases. It's not plugging a major hole in the pm_runtime
support, just fixing a programming sequence that was not tested before.

One possible objection is that we don't keep the reference and the bus
active until all components are probed. I tried doing this at the ASoC
core level, but that breaks all kinds of devices that have their own
quirky way of dealing with pm_runtime - specifically HDaudio and HDMI.
That's why I added this resume here.

Makes sense?


  reply	other threads:[~2022-06-17 16:55 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-16 21:08 [PATCH 0/2] ASoC: SOF/soundwire: use resume_and_get on component probe Pierre-Louis Bossart
2022-06-16 21:08 ` [PATCH 1/2] ASoC: SOF: pcm: use pm_resume_and_get() " Pierre-Louis Bossart
2022-06-16 21:08 ` [PATCH 2/2] ASoC: codecs: soundwire: call pm_runtime_resume() in " Pierre-Louis Bossart
2022-06-17  9:44   ` Mark Brown
2022-06-17 14:35     ` Pierre-Louis Bossart [this message]
2022-06-17 17:37       ` Mark Brown
2022-06-17 18:54         ` Pierre-Louis Bossart
2022-06-17 19:05           ` Pierre-Louis Bossart
2022-06-17 20:12             ` Pierre-Louis Bossart
2022-06-18  0:46 ` [PATCH 0/2] ASoC: SOF/soundwire: use resume_and_get on " Mark Brown

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=1ddc85ea-4e40-eb07-ee5b-8bc58514223d@linux.intel.com \
    --to=pierre-louis.bossart@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=rander.wang@intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=tiwai@suse.de \
    --cc=vkoul@kernel.org \
    --cc=yung-chuan.liao@linux.intel.com \
    /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: link
Be 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.