[Intel-xe] [PATCH 11/14] ALSA: hda/intel: Move snd_hdac_i915_init to before probe_work.

Takashi Iwai tiwai at suse.de
Tue Nov 14 15:50:17 UTC 2023


On Tue, 14 Nov 2023 15:39:16 +0100,
Maarten Lankhorst wrote:
> 
> 
> Hey,
> 
> Den 2023-11-14 kl. 14:39, skrev Ville Syrjälä:
> 
>     On Tue, Nov 14, 2023 at 02:35:10PM +0200, Jani Nikula wrote:
>     
>         On Tue, 14 Nov 2023, Ville Syrjälä <ville.syrjala at linux.intel.com> wrote:
>         
>             On Mon, Oct 02, 2023 at 09:38:44PM +0200, maarten.lankhorst at linux.intel.com wrote:
>             
>                 From: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>                 
>                 Now that we can use -EPROBE_DEFER, it's no longer required to spin off
>                 the snd_hdac_i915_init into a workqueue.
>                 
>                 Use the -EPROBE_DEFER mechanism instead, which must be returned in the
>                 probe function.
>                 
>             This completely broke i915 audio!
>             
>             I also can't see any trace of this stuff ever being posted to 
>             intel-gfx so it never went through the CI.
>             
>             Please fix or revert ASAP.
>             
>         Cc: Jani, Suresh
>         
>         Ville, please file a bug at gitlab so we can track this, thanks.
>         
>     https://gitlab.freedesktop.org/drm/intel/-/issues/9671
>     
> Looks like a simple patch should be enough, can you test below?

Seems that we reached to the same conclusion :)

I took a quick look at other code paths, and sound/pci/hda/hda_intel.c
is the only place that needs the correction.  Other (ASoC) drivers are
either simply always returning the error or dealing only with -ENODEV
case for skipping the HDMI codec.


thanks,

Takashi

> 
> ----
> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index 058f6e6491f9a..946aaa487f200 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -2145,7 +2145,8 @@ static int azx_probe(struct pci_dev *pci,
>                                                                    * for other chips, still continue probing as other
>                                                                    * codecs can be on the same link.
>                                                                    */
> -                                                                 if (HDA_CONTROLLER_IN_GPU(pci)) {
> +                                                                 if (HDA_CONTROLLER_IN_GPU(pci) ||
> +                                                                     err == -EPROBE_DEFER) {
>                                                                                         goto out_free;
>                                                                   } else {
>                                                                                         /* don't bother any longer */
> 


More information about the Intel-xe mailing list