On Tue, 15 Oct 2024 20:51:12 +0200, Philipp Stanner wrote: > > pci_intx() is a hybrid function which can sometimes be managed through > devres. To remove this hybrid nature from pci_intx(), it is necessary to > port users to either an always-managed or a never-managed version. > > hda_intel enables its PCI-Device with pcim_enable_device(). Thus, it needs > the always-managed version. > > Replace pci_intx() with pcim_intx(). > > Signed-off-by: Philipp Stanner <pstanner@xxxxxxxxxx> > --- > sound/pci/hda/hda_intel.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c > index b4540c5cd2a6..b44ca7b6e54f 100644 > --- a/sound/pci/hda/hda_intel.c > +++ b/sound/pci/hda/hda_intel.c > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect) > } > bus->irq = chip->pci->irq; > chip->card->sync_irq = bus->irq; > - pci_intx(chip->pci, !chip->msi); > + pcim_intx(chip->pci, !chip->msi); > return 0; > } > Hm, it's OK-ish to do this as it's practically same as what pci_intx() currently does. But, the current code can be a bit inconsistent about the original intx value. pcim_intx() always stores !enable to res->orig_intx unconditionally, and it means that the orig_intx value gets overridden at each time pcim_intx() gets called. Meanwhile, HD-audio driver does release and re-acquire the interrupt after disabling MSI when something goes wrong, and pci_intx() call above is a part of that procedure. So, it can rewrite the res->orig_intx to another value by retry without MSI. And after the driver removal, it'll lead to another state. In anyway, as it doesn't change the current behavior, feel free to take my ack for now: Acked-by: Takashi Iwai <tiwai@xxxxxxx> thanks, Takashi