Re: [PATCH v3 0/4] Introduce pcim_alloc_irq_vectors()
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2021-02-18 16:54:48
Also in:
linux-i2c, linux-pci, lkml
On Thu, Feb 18, 2021 at 10:36:28AM +0100, Robert Richter wrote:
On 17.02.21 00:02:45, Dejin Zheng wrote:quoted
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