[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