On Fri, Nov 11, 2022 at 02:54:37PM +0100, Thomas Gleixner wrote: > From: Ahmed S. Darwish <darwi@xxxxxxxxxxxxx> > > Let the core do the freeing of descriptors and just keep it around for the > legacy case. > > Signed-off-by: Ahmed S. Darwish <darwi@xxxxxxxxxxxxx> > Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Acked-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > --- > drivers/pci/msi/irqdomain.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > --- a/drivers/pci/msi/irqdomain.c > +++ b/drivers/pci/msi/irqdomain.c > @@ -24,11 +24,12 @@ void pci_msi_teardown_msi_irqs(struct pc > struct irq_domain *domain; > > domain = dev_get_msi_domain(&dev->dev); > - if (domain && irq_domain_is_hierarchy(domain)) > + if (domain && irq_domain_is_hierarchy(domain)) { > msi_domain_free_irqs_descs_locked(domain, &dev->dev); > - else > + } else { > pci_msi_legacy_teardown_msi_irqs(dev); > - msi_free_msi_descs(&dev->dev); > + msi_free_msi_descs(&dev->dev); > + } > } > > /** > @@ -170,6 +171,9 @@ struct irq_domain *pci_msi_create_irq_do > if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS) > pci_msi_domain_update_chip_ops(info); > > + /* Let the core code free MSI descriptors when freeing interrupts */ > + info->flags |= MSI_FLAG_FREE_MSI_DESCS; > + > info->flags |= MSI_FLAG_ACTIVATE_EARLY | MSI_FLAG_DEV_SYSFS; > if (IS_ENABLED(CONFIG_GENERIC_IRQ_RESERVATION_MODE)) > info->flags |= MSI_FLAG_MUST_REACTIVATE; >