[PATCH v2] PCI: mvebu: Dispose INTx IRQs before to removing INTx domain

Bjorn Helgaas helgaas at kernel.org
Sat Jul 13 12:32:00 PDT 2024


On Sat, Jul 13, 2024 at 12:33:29PM +0200, Thomas Gleixner wrote:
> On Fri, Jul 12 2024 at 15:41, Bjorn Helgaas wrote:
> > On Thu, Jul 11, 2024 at 03:25:44PM +0200, Marek Behún wrote:
> >>  		/* Remove IRQ domains. */
> >> -		if (port->intx_irq_domain)
> >> +		if (port->intx_irq_domain) {
> >> +			for (int j = 0; j < PCI_NUM_INTX; j++) {
> >> +				int virq = irq_find_mapping(port->intx_irq_domain, j);
> >> +
> >> +				if (virq > 0)
> >> +					irq_dispose_mapping(virq);
> >
> > I am not an IRQ expert, so all I can really do is compare this to
> > usage in other drivers.
> >
> > There are 20+ drivers in drivers/pci/controller, and I don't see
> > irq_dispose_mapping() usage similar to this elsewhere.  Does that mean
> > most or all of the other drivers have a similar defect?
> 
> Right.
> 
> But the real question is why is such a mapping not torn down by the
> entity (device, bridge, whatever) which set it up in the first place?

Marek/Pali, the commit log mentions a crash when unloading.  Do you
have a pointer to any details?  Maybe there's a driver there that we
can fix?

Bjorn



More information about the linux-arm-kernel mailing list