Message ID | 20201023102340.25494-2-kai.heng.feng@canonical.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/4] ALSA: hda: Refactor codec PM to use direct-complete optimization | expand |
On Fri, 23 Oct 2020 12:23:36 +0200, Kai-Heng Feng wrote: > > @@ -1038,14 +1036,6 @@ static int azx_suspend(struct device *dev) > __azx_runtime_suspend(chip); > else > pm_runtime_force_suspend(dev); > - if (bus->irq >= 0) { > - free_irq(bus->irq, chip); > - bus->irq = -1; > - chip->card->sync_irq = -1; > - } This release of irq has nothing to do with MSI. There has been PCI controllers that assign to a different IRQ line after the resume. > - if (azx_acquire_irq(chip, 1) < 0) > - return -EIO; Ditto. thanks, Takashi
> On Oct 23, 2020, at 19:34, Takashi Iwai <tiwai@suse.de> wrote: > > On Fri, 23 Oct 2020 12:23:36 +0200, > Kai-Heng Feng wrote: >> >> @@ -1038,14 +1036,6 @@ static int azx_suspend(struct device *dev) >> __azx_runtime_suspend(chip); >> else >> pm_runtime_force_suspend(dev); >> - if (bus->irq >= 0) { >> - free_irq(bus->irq, chip); >> - bus->irq = -1; >> - chip->card->sync_irq = -1; >> - } > > This release of irq has nothing to do with MSI. There has been PCI > controllers that assign to a different IRQ line after the resume. Can this issue happened before commit 41017f0cac925 ("[PATCH] PCI: MSI(X) save/restore for suspend/resume") was merged? Kai-Heng > >> - if (azx_acquire_irq(chip, 1) < 0) >> - return -EIO; > > Ditto. > > > thanks, > > Takashi
On Fri, 23 Oct 2020 14:53:08 +0200, Kai-Heng Feng wrote: > > > > > On Oct 23, 2020, at 19:34, Takashi Iwai <tiwai@suse.de> wrote: > > > > On Fri, 23 Oct 2020 12:23:36 +0200, > > Kai-Heng Feng wrote: > >> > >> @@ -1038,14 +1036,6 @@ static int azx_suspend(struct device *dev) > >> __azx_runtime_suspend(chip); > >> else > >> pm_runtime_force_suspend(dev); > >> - if (bus->irq >= 0) { > >> - free_irq(bus->irq, chip); > >> - bus->irq = -1; > >> - chip->card->sync_irq = -1; > >> - } > > > > This release of irq has nothing to do with MSI. There has been PCI > > controllers that assign to a different IRQ line after the resume. > > Can this issue happened before commit 41017f0cac925 ("[PATCH] PCI: MSI(X) save/restore for suspend/resume") was merged? It's not about MSI. The IRQ number itself may change after the resume. But I guess it's hard to prove it; the system was tad old, and I don't know who own it now. Takashi
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 749b88090970..b4aa1dcf1aae 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1022,13 +1022,11 @@ static int azx_suspend(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); struct azx *chip; - struct hdac_bus *bus; if (!azx_is_pm_ready(card)) return 0; chip = card->private_data; - bus = azx_bus(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); /* An ugly workaround: direct call of __azx_runtime_suspend() and * __azx_runtime_resume() for old Intel platforms that suffer from @@ -1038,14 +1036,6 @@ static int azx_suspend(struct device *dev) __azx_runtime_suspend(chip); else pm_runtime_force_suspend(dev); - if (bus->irq >= 0) { - free_irq(bus->irq, chip); - bus->irq = -1; - chip->card->sync_irq = -1; - } - - if (chip->msi) - pci_disable_msi(chip->pci); trace_azx_suspend(chip); return 0; @@ -1060,11 +1050,6 @@ static int azx_resume(struct device *dev) return 0; chip = card->private_data; - if (chip->msi) - if (pci_enable_msi(chip->pci) < 0) - chip->msi = 0; - if (azx_acquire_irq(chip, 1) < 0) - return -EIO; if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) __azx_runtime_resume(chip, false);
The code predates 2005, it should be unnecessary now as PCI core handles MSI much better nowadays. So stop PCI MSI mangling in suspend/resume callbacks. Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> --- sound/pci/hda/hda_intel.c | 15 --------------- 1 file changed, 15 deletions(-)