Re: [PATCH v2 2/4] ALSA: hda: Stop mangling PCI IRQ
From: Kai-Heng Feng
Date: Tue Oct 27 2020 - 03:43:03 EST
> On Oct 27, 2020, at 15:36, Takashi Iwai <tiwai@xxxxxxx> wrote:
>
> On Tue, 27 Oct 2020 06:39:59 +0100,
> Kai-Heng Feng wrote:
>>
>> The code predates 2005, it should be unnecessary now as PCI core handles
>> IRQ much better nowadays.
>>
>> So stop PCI IRQ mangling in suspend/resume callbacks.
>>
>> Takashi Iwai mentioned that IRQ number can change after S3 on some
>> really old hardwares. We should use quirks to handle those platforms, as
>> most modern systems won't have that issue.
>
> I believe it was S4. And this pretty much depends on BIOS, hence it's
> hard to apply the quirk, honestly speaking.
Ok, S4 is indeed hard to handle.
>
> And, if we know that we need a quirk, dropping the code completely now
> is a bad move. If any, this should be applied conditionally to the
> "known to be modern" platforms, but this will make the code rather
> messier, OTOH.
>
> Do we need this change inevitably? Otherwise I'd skip this one.
Ok, please drop this one.
Kai-Heng
>
>
> thanks,
>
> Takashi
>
>
>>
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
>> ---
>> v2:
>> - Wording.
>> - Add info on IRQ # can change on old hardwares.
>>
>> 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
>>