diff options
author | Takashi Iwai <tiwai@suse.de> | 2019-10-28 04:10:56 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2019-10-28 06:47:59 -0400 |
commit | 1a7f60b9df614bb36d14dc0c0bc898a31b2b506f (patch) | |
tree | dbf8536d22d8ede5eeccf2c0b800c72e5d0bd30a | |
parent | f2bbdbcb075f3977a53da3bdcb7cd460bc8ae5f2 (diff) |
Revert "ALSA: hda: Flush interrupts on disabling"
This reverts commit caa8422d01e983782548648e125fd617cadcec3f.
It turned out that this commit caused a regression at shutdown /
reboot, as the synchronize_irq() calls seems blocking the whole
shutdown. Also another part of the change about shuffling the call
order looks suspicious; the azx_stop_chip() call disables the CORB /
RIRB while the others may still need the CORB/RIRB update.
Since the original commit itself was a cargo-fix, let's revert the
whole patch.
Fixes: caa8422d01e9 ("ALSA: hda: Flush interrupts on disabling")
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=205333
BugLinK: https://bugs.freedesktop.org/show_bug.cgi?id=111174
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://lore.kernel.org/r/20191028081056.22010-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/hda/hdac_controller.c | 2 | ||||
-rw-r--r-- | sound/pci/hda/hda_intel.c | 2 |
2 files changed, 1 insertions, 3 deletions
diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c index d3999e7b0705..7e7be8e4dcf9 100644 --- a/sound/hda/hdac_controller.c +++ b/sound/hda/hdac_controller.c | |||
@@ -447,8 +447,6 @@ static void azx_int_disable(struct hdac_bus *bus) | |||
447 | list_for_each_entry(azx_dev, &bus->stream_list, list) | 447 | list_for_each_entry(azx_dev, &bus->stream_list, list) |
448 | snd_hdac_stream_updateb(azx_dev, SD_CTL, SD_INT_MASK, 0); | 448 | snd_hdac_stream_updateb(azx_dev, SD_CTL, SD_INT_MASK, 0); |
449 | 449 | ||
450 | synchronize_irq(bus->irq); | ||
451 | |||
452 | /* disable SIE for all streams */ | 450 | /* disable SIE for all streams */ |
453 | snd_hdac_chip_writeb(bus, INTCTL, 0); | 451 | snd_hdac_chip_writeb(bus, INTCTL, 0); |
454 | 452 | ||
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index a815bc811799..cf53fbd872ee 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -1348,9 +1348,9 @@ static int azx_free(struct azx *chip) | |||
1348 | } | 1348 | } |
1349 | 1349 | ||
1350 | if (bus->chip_init) { | 1350 | if (bus->chip_init) { |
1351 | azx_stop_chip(chip); | ||
1352 | azx_clear_irq_pending(chip); | 1351 | azx_clear_irq_pending(chip); |
1353 | azx_stop_all_streams(chip); | 1352 | azx_stop_all_streams(chip); |
1353 | azx_stop_chip(chip); | ||
1354 | } | 1354 | } |
1355 | 1355 | ||
1356 | if (bus->irq >= 0) | 1356 | if (bus->irq >= 0) |