2022-09-29 13:38:36

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH] ASoC: wcd-mbhc-v2: Revert "ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()"

This reverts commit ddea4bbf287b6028eaa15a185d0693856956ecf2 ("ASoC:
wcd-mbhc-v2: use pm_runtime_resume_and_get()"), because it introduced
double runtime PM put if pm_runtime_get_sync() returns -EACCES:

wcd934x-codec wcd934x-codec.3.auto: WCD934X Minor:0x1 Version:0x401
wcd934x-codec wcd934x-codec.3.auto: Runtime PM usage count underflow!

The commit claimed no changes in functionality except dropping the
reference on -EACCESS. This is exactly the change introducing bug
because function calls unconditionally pm_runtime_put_autosuspend() at
the end.

Cc: Bard Liao <[email protected]>
Cc: Pierre-Louis Bossart <[email protected]>
Cc: Kai Vehmanen <[email protected]>
Cc: Ranjani Sridharan <[email protected]>
Cc: Srinivas Kandagatla <[email protected]>
Cc: Cezary Rojewski <[email protected]>
Cc: <[email protected]>
Fixes: ddea4bbf287b ("ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()")
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
sound/soc/codecs/wcd-mbhc-v2.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/sound/soc/codecs/wcd-mbhc-v2.c b/sound/soc/codecs/wcd-mbhc-v2.c
index b16a18dbfe7a..1911750f7445 100644
--- a/sound/soc/codecs/wcd-mbhc-v2.c
+++ b/sound/soc/codecs/wcd-mbhc-v2.c
@@ -714,11 +714,12 @@ static int wcd_mbhc_initialise(struct wcd_mbhc *mbhc)
struct snd_soc_component *component = mbhc->component;
int ret;

- ret = pm_runtime_resume_and_get(component->dev);
+ ret = pm_runtime_get_sync(component->dev);
if (ret < 0 && ret != -EACCES) {
dev_err_ratelimited(component->dev,
- "pm_runtime_resume_and_get failed in %s, ret %d\n",
+ "pm_runtime_get_sync failed in %s, ret %d\n",
__func__, ret);
+ pm_runtime_put_noidle(component->dev);
return ret;
}

@@ -1096,11 +1097,12 @@ static void wcd_correct_swch_plug(struct work_struct *work)
mbhc = container_of(work, struct wcd_mbhc, correct_plug_swch);
component = mbhc->component;

- ret = pm_runtime_resume_and_get(component->dev);
+ ret = pm_runtime_get_sync(component->dev);
if (ret < 0 && ret != -EACCES) {
dev_err_ratelimited(component->dev,
- "pm_runtime_resume_and_get failed in %s, ret %d\n",
+ "pm_runtime_get_sync failed in %s, ret %d\n",
__func__, ret);
+ pm_runtime_put_noidle(component->dev);
return;
}
micbias_mv = wcd_mbhc_get_micbias(mbhc);
--
2.34.1


2022-09-29 14:08:34

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] ASoC: wcd-mbhc-v2: Revert "ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()"

On 29/09/2022 15:41, Mark Brown wrote:
> On Thu, Sep 29, 2022 at 03:15:28PM +0200, Krzysztof Kozlowski wrote:
>
>> Cc: <[email protected]>
>> Fixes: ddea4bbf287b ("ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()")
>
> That commit isn't in a released kernel.

Oh, indeed, thanks. I'll send a v2 without it.

Best regards,
Krzysztof

2022-09-29 14:46:12

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] ASoC: wcd-mbhc-v2: Revert "ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()"

On Thu, Sep 29, 2022 at 03:15:28PM +0200, Krzysztof Kozlowski wrote:

> Cc: <[email protected]>
> Fixes: ddea4bbf287b ("ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()")

That commit isn't in a released kernel.


Attachments:
(No filename) (225.00 B)
signature.asc (499.00 B)
Download all attachments

2022-09-29 14:48:25

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] ASoC: wcd-mbhc-v2: Revert "ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()"

On Thu, Sep 29, 2022 at 04:00:26PM +0200, Krzysztof Kozlowski wrote:
> On 29/09/2022 15:41, Mark Brown wrote:
> > On Thu, Sep 29, 2022 at 03:15:28PM +0200, Krzysztof Kozlowski wrote:
> >
> >> Cc: <[email protected]>
> >> Fixes: ddea4bbf287b ("ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()")
> >
> > That commit isn't in a released kernel.
>
> Oh, indeed, thanks. I'll send a v2 without it.

It's fine.


Attachments:
(No filename) (427.00 B)
signature.asc (499.00 B)
Download all attachments

2022-09-29 15:47:57

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] ASoC: wcd-mbhc-v2: Revert "ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()"

On Thu, 29 Sep 2022 15:15:28 +0200, Krzysztof Kozlowski wrote:
> This reverts commit ddea4bbf287b6028eaa15a185d0693856956ecf2 ("ASoC:
> wcd-mbhc-v2: use pm_runtime_resume_and_get()"), because it introduced
> double runtime PM put if pm_runtime_get_sync() returns -EACCES:
>
> wcd934x-codec wcd934x-codec.3.auto: WCD934X Minor:0x1 Version:0x401
> wcd934x-codec wcd934x-codec.3.auto: Runtime PM usage count underflow!
>
> [...]

Applied to

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

Thanks!

[1/1] ASoC: wcd-mbhc-v2: Revert "ASoC: wcd-mbhc-v2: use pm_runtime_resume_and_get()"
commit: e18f6bcf8e864ea0e9690691d0d749c662b6a2c7

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