Seeing the we want to use more interrupts in the NTB MSI code
we need to be able allocate more (sometimes virtual) interrupts
in the switchtec driver. Therefore add a module parameter to
request to allocate additional interrupts.

This puts virtually no limit on the number of MSI interrupts available
to NTB clients.

Signed-off-by: Logan Gunthorpe <log...@deltatee.com>
Cc: Bjorn Helgaas <bhelg...@google.com>
---
 drivers/pci/switch/switchtec.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c
index e22766c79fe9..8b1db78197d9 100644
--- a/drivers/pci/switch/switchtec.c
+++ b/drivers/pci/switch/switchtec.c
@@ -30,6 +30,10 @@ module_param(use_dma_mrpc, bool, 0644);
 MODULE_PARM_DESC(use_dma_mrpc,
                 "Enable the use of the DMA MRPC feature");
 
+static int nirqs = 32;
+module_param(nirqs, int, 0644);
+MODULE_PARM_DESC(nirqs, "number of interrupts to allocate (more may be useful 
for NTB applications)");
+
 static dev_t switchtec_devt;
 static DEFINE_IDA(switchtec_minor_ida);
 
@@ -1247,8 +1251,12 @@ static int switchtec_init_isr(struct switchtec_dev 
*stdev)
        int dma_mrpc_irq;
        int rc;
 
-       nvecs = pci_alloc_irq_vectors(stdev->pdev, 1, 4,
-                                     PCI_IRQ_MSIX | PCI_IRQ_MSI);
+       if (nirqs < 4)
+               nirqs = 4;
+
+       nvecs = pci_alloc_irq_vectors(stdev->pdev, 1, nirqs,
+                                     PCI_IRQ_MSIX | PCI_IRQ_MSI |
+                                     PCI_IRQ_VIRTUAL);
        if (nvecs < 0)
                return nvecs;
 
-- 
2.19.0

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to