PCI/MSI: Move pci_disable_msix() to api.c
To disentangle the maze in msi.c, all exported device-driver MSI APIs are now to be grouped in one file, api.c. Move pci_disable_msix() and make its kernel-doc comprehensive. Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Link: https://lore.kernel.org/r/20221111122015.156785224@linutronix.de
This commit is contained in:
parent
7b50f62776
commit
18e1926b8c
|
@ -111,6 +111,30 @@ int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries,
|
|||
}
|
||||
EXPORT_SYMBOL(pci_enable_msix_range);
|
||||
|
||||
/**
|
||||
* pci_disable_msix() - Disable MSI-X interrupt mode on device
|
||||
* @dev: the PCI device to operate on
|
||||
*
|
||||
* Legacy device driver API to disable MSI-X interrupt mode on device,
|
||||
* free earlier-allocated interrupt vectors, and restore INTx.
|
||||
* The PCI device Linux IRQ (@dev->irq) is restored to its default pin
|
||||
* assertion IRQ. This is the cleanup pair of pci_enable_msix_range().
|
||||
*
|
||||
* NOTE: The newer pci_alloc_irq_vectors() / pci_free_irq_vectors() API
|
||||
* pair should, in general, be used instead.
|
||||
*/
|
||||
void pci_disable_msix(struct pci_dev *dev)
|
||||
{
|
||||
if (!pci_msi_enabled() || !dev || !dev->msix_enabled)
|
||||
return;
|
||||
|
||||
msi_lock_descs(&dev->dev);
|
||||
pci_msix_shutdown(dev);
|
||||
pci_free_msi_irqs(dev);
|
||||
msi_unlock_descs(&dev->dev);
|
||||
}
|
||||
EXPORT_SYMBOL(pci_disable_msix);
|
||||
|
||||
/**
|
||||
* pci_alloc_irq_vectors() - Allocate multiple device interrupt vectors
|
||||
* @dev: the PCI device to operate on
|
||||
|
|
|
@ -736,7 +736,7 @@ static int __pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries,
|
|||
return msix_capability_init(dev, entries, nvec, affd);
|
||||
}
|
||||
|
||||
static void pci_msix_shutdown(struct pci_dev *dev)
|
||||
void pci_msix_shutdown(struct pci_dev *dev)
|
||||
{
|
||||
struct msi_desc *desc;
|
||||
|
||||
|
@ -758,18 +758,6 @@ static void pci_msix_shutdown(struct pci_dev *dev)
|
|||
pcibios_alloc_irq(dev);
|
||||
}
|
||||
|
||||
void pci_disable_msix(struct pci_dev *dev)
|
||||
{
|
||||
if (!pci_msi_enable || !dev || !dev->msix_enabled)
|
||||
return;
|
||||
|
||||
msi_lock_descs(&dev->dev);
|
||||
pci_msix_shutdown(dev);
|
||||
pci_free_msi_irqs(dev);
|
||||
msi_unlock_descs(&dev->dev);
|
||||
}
|
||||
EXPORT_SYMBOL(pci_disable_msix);
|
||||
|
||||
int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
|
||||
struct irq_affinity *affd)
|
||||
{
|
||||
|
|
|
@ -86,6 +86,7 @@ static inline __attribute_const__ u32 msi_multi_mask(struct msi_desc *desc)
|
|||
|
||||
/* MSI internal functions invoked from the public APIs */
|
||||
void pci_msi_shutdown(struct pci_dev *dev);
|
||||
void pci_msix_shutdown(struct pci_dev *dev);
|
||||
void pci_free_msi_irqs(struct pci_dev *dev);
|
||||
int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec, struct irq_affinity *affd);
|
||||
int __pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, int minvec,
|
||||
|
|
Loading…
Reference in New Issue