[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[patch V2 26/36] powerpc/pseries/msi: Let core code check for contiguous entries



Set the domain info flag and remove the check.

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
---
V2: Remove it completely - Cedric
---
 arch/powerpc/platforms/pseries/msi.c |   33 ++++++++-------------------------
 1 file changed, 8 insertions(+), 25 deletions(-)

--- a/arch/powerpc/platforms/pseries/msi.c
+++ b/arch/powerpc/platforms/pseries/msi.c
@@ -321,27 +321,6 @@ static int msi_quota_for_device(struct p
        return request;
 }
 
-static int check_msix_entries(struct pci_dev *pdev)
-{
-       struct msi_desc *entry;
-       int expected;
-
-       /* There's no way for us to express to firmware that we want
-        * a discontiguous, or non-zero based, range of MSI-X entries.
-        * So we must reject such requests. */
-
-       expected = 0;
-       for_each_pci_msi_entry(entry, pdev) {
-               if (entry->msi_index != expected) {
-                       pr_debug("rtas_msi: bad MSI-X entries.\n");
-                       return -EINVAL;
-               }
-               expected++;
-       }
-
-       return 0;
-}
-
 static void rtas_hack_32bit_msi_gen2(struct pci_dev *pdev)
 {
        u32 addr_hi, addr_lo;
@@ -380,9 +359,6 @@ static int rtas_prepare_msi_irqs(struct
        if (quota && quota < nvec)
                return quota;
 
-       if (type == PCI_CAP_ID_MSIX && check_msix_entries(pdev))
-               return -EINVAL;
-
        /*
         * Firmware currently refuse any non power of two allocation
         * so we round up if the quota will allow it.
@@ -530,9 +506,16 @@ static struct irq_chip pseries_pci_msi_i
        .irq_write_msi_msg      = pseries_msi_write_msg,
 };
 
+
+/*
+ * Set MSI_FLAG_MSIX_CONTIGUOUS as there is no way to express to
+ * firmware to request a discontiguous or non-zero based range of
+ * MSI-X entries. Core code will reject such setup attempts.
+ */
 static struct msi_domain_info pseries_msi_domain_info = {
        .flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
-                 MSI_FLAG_MULTI_PCI_MSI  | MSI_FLAG_PCI_MSIX),
+                 MSI_FLAG_MULTI_PCI_MSI  | MSI_FLAG_PCI_MSIX |
+                 MSI_FLAG_MSIX_CONTIGUOUS),
        .ops   = &pseries_pci_msi_domain_ops,
        .chip  = &pseries_pci_msi_irq_chip,
 };




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.