Thread (43 messages) 43 messages, 11 authors, 2024-10-14

Re: [RFC PATCH 02/13] ALSA: hda: hda_intel: Use always-managed version of pcim_intx()

From: Philipp Stanner <hidden>
Date: 2024-10-11 12:27:55
Also in: kvm, linux-ide, linux-input, linux-pci, linux-sound, linux-staging, linux-wireless, lkml, xen-devel

On Thu, 2024-10-10 at 17:46 +0300, Andy Shevchenko wrote:
On Wed, Oct 09, 2024 at 10:35:08AM +0200, Philipp Stanner wrote:
quoted
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().
...
quoted
 	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;
I believe each driver needs an individual approach. Looking at the
above
I would first to understand why this one is being used and why we
can't
switch to pci{m}_alloc_irq_vectors(). (Yeah, managed
pci_alloc_irq_vectors()
is probably still missing, I don't remember if you introduced it or
not.
Alright alright – we touched it in the other mail briefly, but let me
point out another specific problem:

pci_alloc_irq_vectors() *uses* pci_intx(). And pci_intx() can be
managed sometimes.

See the problem? :(

So it's not just that I couldn't port the driver Alex is concerned
about, it's also that MSI itself is a user of pci_intx().

So a pcim_alloc_irq_vectors() might end up doing double-devres or God
knows what else. Only once pci_intx() is clean one can start thinking
about the code in pci/msi/

It's the biggest reason why I want to clean it up as suggested here,
and also why the only patch I'm really nervous about is number 8.


P.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help