diff mbox series

ALSA: hda: Fix codec device field initializan

Message ID 20230210165541.3543604-1-cezary.rojewski@intel.com (mailing list archive)
State Accepted
Commit 3af4a4f7a20c94009adba65764fa5a0269d70a82
Headers show
Series ALSA: hda: Fix codec device field initializan | expand

Commit Message

Cezary Rojewski Feb. 10, 2023, 4:55 p.m. UTC
Commit f2bd1c5ae2cb ("ALSA: hda: Fix page fault in
snd_hda_codec_shutdown()") relocated initialization of several codec
device fields. Due to differences between codec_exec_verb() and
snd_hdac_bus_exec_bus() in how they handle VERB execution - the latter
does not touch PM - assigning ->exec_verb to codec_exec_verb() causes PM
to be engaged before it is configured for the device. Configuration of
PM for the ASoC HDAudio sound card is done with snd_hda_set_power_save()
during skl_hda_audio_probe() whereas the assignment happens early, in
snd_hda_codec_device_init().

Revert to previous behavior to avoid problems caused by too early PM
manipulation.

Suggested-by: Jason Montleon <jmontleo@redhat.com>
Link: https://lore.kernel.org/regressions/CALFERdzKUodLsm6=Ub3g2+PxpNpPtPq3bGBLbff=eZr9_S=YVA@mail.gmail.com
Fixes: f2bd1c5ae2cb ("ALSA: hda: Fix page fault in snd_hda_codec_shutdown()")
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
---

A result of recent discussion [1] regarding sound regression in v6.1 and
onward. Fix made possible by outstanding input from Jason and Sasa
(Cced) - Thank you!

Note: I did not receive results from our CI yet, should happen on Monday
but posting early so the review can be conducted.

[1]: https://lore.kernel.org/regressions/CALFERdzKUodLsm6=Ub3g2+PxpNpPtPq3bGBLbff=eZr9_S=YVA@mail.gmail.com/

 sound/pci/hda/hda_codec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Takashi Iwai Feb. 11, 2023, 8:37 a.m. UTC | #1
On Fri, 10 Feb 2023 17:55:41 +0100,
Cezary Rojewski wrote:
> 
> Commit f2bd1c5ae2cb ("ALSA: hda: Fix page fault in
> snd_hda_codec_shutdown()") relocated initialization of several codec
> device fields. Due to differences between codec_exec_verb() and
> snd_hdac_bus_exec_bus() in how they handle VERB execution - the latter
> does not touch PM - assigning ->exec_verb to codec_exec_verb() causes PM
> to be engaged before it is configured for the device. Configuration of
> PM for the ASoC HDAudio sound card is done with snd_hda_set_power_save()
> during skl_hda_audio_probe() whereas the assignment happens early, in
> snd_hda_codec_device_init().
> 
> Revert to previous behavior to avoid problems caused by too early PM
> manipulation.
> 
> Suggested-by: Jason Montleon <jmontleo@redhat.com>
> Link: https://lore.kernel.org/regressions/CALFERdzKUodLsm6=Ub3g2+PxpNpPtPq3bGBLbff=eZr9_S=YVA@mail.gmail.com
> Fixes: f2bd1c5ae2cb ("ALSA: hda: Fix page fault in snd_hda_codec_shutdown()")
> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
> ---
> 
> A result of recent discussion [1] regarding sound regression in v6.1 and
> onward. Fix made possible by outstanding input from Jason and Sasa
> (Cced) - Thank you!
> 
> Note: I did not receive results from our CI yet, should happen on Monday
> but posting early so the review can be conducted.
> 
> [1]: https://lore.kernel.org/regressions/CALFERdzKUodLsm6=Ub3g2+PxpNpPtPq3bGBLbff=eZr9_S=YVA@mail.gmail.com/

Applied now.  Thanks.


Takashi
Cezary Rojewski Feb. 13, 2023, 3:56 p.m. UTC | #2
On 2023-02-10 5:55 PM, Cezary Rojewski wrote:

...

> A result of recent discussion [1] regarding sound regression in v6.1 and
> onward. Fix made possible by outstanding input from Jason and Sasa
> (Cced) - Thank you!
> 
> Note: I did not receive results from our CI yet, should happen on Monday
> but posting early so the review can be conducted.


Current results show no regression on SKL/KBL/APL RVPs with the 
skylake-driver.

Tested-by: Cezary Rojewski <cezary.rojewski@intel.com>

> [1]: https://lore.kernel.org/regressions/CALFERdzKUodLsm6=Ub3g2+PxpNpPtPq3bGBLbff=eZr9_S=YVA@mail.gmail.com/
diff mbox series

Patch

diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index ac1cc7c5290e..2e728aad6771 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -927,7 +927,6 @@  snd_hda_codec_device_init(struct hda_bus *bus, unsigned int codec_addr,
 	codec->depop_delay = -1;
 	codec->fixup_id = HDA_FIXUP_ID_NOT_SET;
 	codec->core.dev.release = snd_hda_codec_dev_release;
-	codec->core.exec_verb = codec_exec_verb;
 	codec->core.type = HDA_DEV_LEGACY;
 
 	mutex_init(&codec->spdif_mutex);
@@ -998,6 +997,7 @@  int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
 	if (snd_BUG_ON(codec_addr > HDA_MAX_CODEC_ADDRESS))
 		return -EINVAL;
 
+	codec->core.exec_verb = codec_exec_verb;
 	codec->card = card;
 	codec->addr = codec_addr;