Re: [PATCH v3 0/4] Introduce pcim_alloc_irq_vectors()

From: Andy Shevchenko
Date: Thu Feb 18 2021 - 11:54:03 EST


On Thu, Feb 18, 2021 at 10:36:28AM +0100, Robert Richter wrote:
> On 17.02.21 00:02:45, Dejin Zheng wrote:
> > Introduce pcim_alloc_irq_vectors(), a device-managed version of
> > pci_alloc_irq_vectors(), In some i2c drivers, If pcim_enable_device()
> > has been called before, then pci_alloc_irq_vectors() is actually a
> > device-managed function. It is used as a device-managed function, So
> > replace it with pcim_alloc_irq_vectors().
> >
> > Changelog
> > ---------
> > v2 -> v3:
> > - Add some commit comments for replace some codes in
> > pcim_release() by pci_free_irq_vectors().
> > - Simplify the error handling path in i2c designware
> > driver.
> > v1 -> v2:
> > - Use pci_free_irq_vectors() to replace some code in
> > pcim_release().
> > - Modify some commit messages.
> >
> > Dejin Zheng (4):
> > PCI: Introduce pcim_alloc_irq_vectors()
> > Documentation: devres: Add pcim_alloc_irq_vectors()
>
> This is already taken care of, see pcim_release():
>
> if (dev->msi_enabled)
> pci_disable_msi(dev);
> if (dev->msix_enabled)
> pci_disable_msix(dev);
>
> Activated when used with pcim_enable_device().
>
> This series is not required.

The problem this series solves is an imbalanced API.
Christoph IIRC was clear that if we want to use PCI IRQ allocation API the
caller must know what's going on. Hiding this behind the scenes is not good.
And this series unhides that.

Also, you may go and clean up all pci_free_irq_vectors() when
pcim_enable_device() is called, but I guess you will get painful process and
rejection in a pile of cases.

--
With Best Regards,
Andy Shevchenko