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

Kai-Heng Feng kai.heng.feng at canonical.com
Tue Oct 27 08:42:52 CET 2020


> On Oct 27, 2020, at 15:36, Takashi Iwai <tiwai at suse.de> 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 at canonical.com>
>> ---
>> 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
>> 



More information about the Alsa-devel mailing list