[alsa-devel] [PATCH 1/2] ALSA: hda - skip runtime PM if async probe is not finished

Takashi Iwai tiwai at suse.de
Tue Jul 28 07:39:24 CEST 2015


On Mon, 27 Jul 2015 23:34:53 +0200,
U. Artie Eoff wrote:
> 
> Crash can occur if runtime PM is triggered before the async probe
> finishes via the azx_firmware_cb when CONFIG_SND_HDA_PATCH_LOADER
> is defined.
> 
> Don't execute PM ops if the async probe has not completed yet.
> 
> The probe is finished when chip->running is true.
> 
> Signed-off-by: U. Artie Eoff <ullysses.a.eoff at intel.com>
> ---
>  sound/pci/hda/hda_intel.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index 735bdcb04ce8..b729b25a6ad6 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -1023,7 +1023,7 @@ static int azx_runtime_idle(struct device *dev)
>  
>  	chip = card->private_data;
>  	hda = container_of(chip, struct hda_intel, chip);
> -	if (chip->disabled || hda->init_failed)
> +	if (chip->disabled || hda->init_failed || !chip->running)
>  		return 0;

For !chip->running, it's better to return -EBUSY.

The disabled and init_failed flags are checked in runtime_suspend()
and runtime_resume() to skip the whole procedures, too.

And I guess the check of chip->running should suffice even without the
second patch.  It assures that the bus is powered on.


thanks,

Takashi


More information about the Alsa-devel mailing list