git: 36b5c440028b - main - linuxkpi: Move pci_alloc_irq_vectors to .c file

From: Warner Losh <imp_at_FreeBSD.org>
Date: Tue, 05 Apr 2022 05:10:06 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=36b5c440028b44b22cfc0596125f575ca513656f

commit 36b5c440028b44b22cfc0596125f575ca513656f
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2022-04-05 05:06:21 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2022-04-05 05:06:21 +0000

    linuxkpi: Move pci_alloc_irq_vectors to .c file
    
    pci_alloc_irq_vectors encodes the size of struct msix_entry
    into its code. Move from .h to .c to move this knowledge from
    client modules to linuxkpi module.
    
    Sponsored by:           Netflix
    Reviewed by:            hselasky
    Differential Revision:  https://reviews.freebsd.org/D34774
---
 sys/compat/linuxkpi/common/include/linux/pci.h | 38 ++------------------------
 sys/compat/linuxkpi/common/src/linux_pci.c     | 36 ++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 36 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h
index 76c6df02bf19..f71bee511d75 100644
--- a/sys/compat/linuxkpi/common/include/linux/pci.h
+++ b/sys/compat/linuxkpi/common/include/linux/pci.h
@@ -317,6 +317,8 @@ struct pcim_iomap_devres {
 };
 
 int pci_request_region(struct pci_dev *pdev, int bar, const char *res_name);
+int pci_alloc_irq_vectors(struct pci_dev *pdev, int minv, int maxv,
+    unsigned int flags);
 
 /* Internal helper function(s). */
 struct pci_dev *lkpinew_pci_dev(device_t);
@@ -860,42 +862,6 @@ pci_enable_msi(struct pci_dev *pdev)
 	return (0);
 }
 
-static inline int
-pci_alloc_irq_vectors(struct pci_dev *pdev, int minv, int maxv,
-    unsigned int flags)
-{
-	int error;
-
-	if (flags & PCI_IRQ_MSIX) {
-		struct msix_entry *entries;
-		int i;
-
-		entries = kcalloc(maxv, sizeof(*entries), GFP_KERNEL);
-		if (entries == NULL) {
-			error = -ENOMEM;
-			goto out;
-		}
-		for (i = 0; i < maxv; ++i)
-			entries[i].entry = i;
-		error = pci_enable_msix(pdev, entries, maxv);
-out:
-		kfree(entries);
-		if (error == 0 && pdev->msix_enabled)
-			return (pdev->dev.irq_end - pdev->dev.irq_start);
-	}
-	if (flags & PCI_IRQ_MSI) {
-		error = pci_enable_msi(pdev);
-		if (error == 0 && pdev->msi_enabled)
-			return (pdev->dev.irq_end - pdev->dev.irq_start);
-	}
-	if (flags & PCI_IRQ_LEGACY) {
-		if (pdev->irq)
-			return (1);
-	}
-
-	return (-EINVAL);
-}
-
 static inline int
 pci_channel_offline(struct pci_dev *pdev)
 {
diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c
index 43a8cf96d0e3..8b64cbae0e6a 100644
--- a/sys/compat/linuxkpi/common/src/linux_pci.c
+++ b/sys/compat/linuxkpi/common/src/linux_pci.c
@@ -883,6 +883,42 @@ linux_pci_unregister_drm_driver(struct pci_driver *pdrv)
 	bus_topo_unlock();
 }
 
+int
+pci_alloc_irq_vectors(struct pci_dev *pdev, int minv, int maxv,
+    unsigned int flags)
+{
+	int error;
+
+	if (flags & PCI_IRQ_MSIX) {
+		struct msix_entry *entries;
+		int i;
+
+		entries = kcalloc(maxv, sizeof(*entries), GFP_KERNEL);
+		if (entries == NULL) {
+			error = -ENOMEM;
+			goto out;
+		}
+		for (i = 0; i < maxv; ++i)
+			entries[i].entry = i;
+		error = pci_enable_msix(pdev, entries, maxv);
+out:
+		kfree(entries);
+		if (error == 0 && pdev->msix_enabled)
+			return (pdev->dev.irq_end - pdev->dev.irq_start);
+	}
+	if (flags & PCI_IRQ_MSI) {
+		error = pci_enable_msi(pdev);
+		if (error == 0 && pdev->msi_enabled)
+			return (pdev->dev.irq_end - pdev->dev.irq_start);
+	}
+	if (flags & PCI_IRQ_LEGACY) {
+		if (pdev->irq)
+			return (1);
+	}
+
+	return (-EINVAL);
+}
+
 CTASSERT(sizeof(dma_addr_t) <= sizeof(uint64_t));
 
 struct linux_dma_obj {