Re: [PATCH 2/4] ALSA: hda: Stop mangling PCI MSI

2020-10-23 Thread Takashi Iwai
On Fri, 23 Oct 2020 14:53:08 +0200,
Kai-Heng Feng wrote:
> 
> 
> 
> > On Oct 23, 2020, at 19:34, Takashi Iwai  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


Re: [PATCH 2/4] ALSA: hda: Stop mangling PCI MSI

2020-10-23 Thread Kai-Heng Feng



> On Oct 23, 2020, at 19:34, Takashi Iwai  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



Re: [PATCH 2/4] ALSA: hda: Stop mangling PCI MSI

2020-10-23 Thread Takashi Iwai
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


[PATCH 2/4] ALSA: hda: Stop mangling PCI MSI

2020-10-23 Thread Kai-Heng Feng
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 
---
 sound/pci/hda/hda_intel.c | 15 ---
 1 file changed, 15 deletions(-)

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);
-- 
2.17.1