[alsa-devel] [PATCH v2] ALSA: hda - Fix race condition between HDA driver and runtime PM
U. Artie Eoff
ullysses.a.eoff at intel.com
Tue Jul 28 06:19:31 CEST 2015
Don't execute runtime suspend if HDA is not finished initializing.
Otherwise, the following errors can occur in hda:
snd_hda_intel 0000:00:1b.0: CORB reset timeout#2, CORBRP = 65535
snd_hda_intel 0000:00:1b.0: no codecs initialized
Debugged and root-cause found by zhuo-hao.lee at intel.com
v2: remove unnecessary extra check for chip init (libin)
Signed-off-by: U. Artie Eoff <ullysses.a.eoff at intel.com>
---
sound/pci/hda/hda_intel.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index b729b25a6ad6..15d4e28fc64e 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1017,17 +1017,19 @@ static int azx_runtime_idle(struct device *dev)
struct snd_card *card = dev_get_drvdata(dev);
struct azx *chip;
struct hda_intel *hda;
+ struct hdac_bus *bus;
if (!card)
return 0;
chip = card->private_data;
hda = container_of(chip, struct hda_intel, chip);
+ bus = azx_bus(chip);
if (chip->disabled || hda->init_failed || !chip->running)
return 0;
if (!power_save_controller || !azx_has_pm_runtime(chip) ||
- azx_bus(chip)->codec_powered)
+ bus->codec_powered || !bus->chip_init)
return -EBUSY;
return 0;
--
1.9.3
More information about the Alsa-devel
mailing list