From: Vikas Chaudhary <vikas.chaudh...@qlogic.com>

For ISP82xx mixed interrupt mode is not supported.
Hence prevent MSI/MSI-x from falling back to INTx mode.

Signed-off-by: Vikas Chaudhary <vikas.chaudh...@qlogic.com>
---
 drivers/scsi/qla4xxx/ql4_isr.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c
index 68bdb8c..5050321 100644
--- a/drivers/scsi/qla4xxx/ql4_isr.c
+++ b/drivers/scsi/qla4xxx/ql4_isr.c
@@ -1364,9 +1364,15 @@ try_msi:
                        pci_disable_msi(ha->pdev);
                }
        }
-       ql4_printk(KERN_WARNING, ha,
-           "MSI: Falling back-to INTx mode -- %d.\n", ret);
 
+       /*
+        * Prevent interrupts from falling back to INTx mode in cases where
+        * interrupts cannot get acquired through MSI-X or MSI mode.
+        */
+       if (is_qla8022(ha)) {
+               ql4_printk(KERN_WARNING, ha, "IRQ not attached -- %d.\n", ret);
+               goto irq_not_attached;
+       }
 try_intx:
        /* Trying INTx */
        ret = request_irq(ha->pdev->irq, ha->isp_ops->intr_handler,
@@ -1380,7 +1386,7 @@ try_intx:
                ql4_printk(KERN_WARNING, ha,
                    "INTx: Failed to reserve interrupt %d already in"
                    " use.\n", ha->pdev->irq);
-               return ret;
+               goto irq_not_attached;
        }
 
 irq_attached:
@@ -1388,6 +1394,7 @@ irq_attached:
        ha->host->irq = ha->pdev->irq;
        ql4_printk(KERN_INFO, ha, "%s: irq %d attached\n",
            __func__, ha->pdev->irq);
+irq_not_attached:
        return ret;
 }
 
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to