diff options
author | Vikas Chaudhary <vikas.chaudhary@qlogic.com> | 2012-09-20 07:35:06 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-24 04:38:55 -0400 |
commit | 109a008bfe73322c1e2b16a7d23eb9899afe4352 (patch) | |
tree | ee49e7b50c13a2d636e448b53206236df18c6840 /drivers/scsi/qla4xxx/ql4_isr.c | |
parent | 39c95826018ed68216cb34a1f6eb8c6b302a24f4 (diff) |
[SCSI] qla4xxx: Prevent MSI/MSI-X falling back to INTx for ISP82XX
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.chaudhary@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_isr.c')
-rw-r--r-- | 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 68bdb8c4d64c..50503217b069 100644 --- a/drivers/scsi/qla4xxx/ql4_isr.c +++ b/drivers/scsi/qla4xxx/ql4_isr.c | |||
@@ -1364,9 +1364,15 @@ try_msi: | |||
1364 | pci_disable_msi(ha->pdev); | 1364 | pci_disable_msi(ha->pdev); |
1365 | } | 1365 | } |
1366 | } | 1366 | } |
1367 | ql4_printk(KERN_WARNING, ha, | ||
1368 | "MSI: Falling back-to INTx mode -- %d.\n", ret); | ||
1369 | 1367 | ||
1368 | /* | ||
1369 | * Prevent interrupts from falling back to INTx mode in cases where | ||
1370 | * interrupts cannot get acquired through MSI-X or MSI mode. | ||
1371 | */ | ||
1372 | if (is_qla8022(ha)) { | ||
1373 | ql4_printk(KERN_WARNING, ha, "IRQ not attached -- %d.\n", ret); | ||
1374 | goto irq_not_attached; | ||
1375 | } | ||
1370 | try_intx: | 1376 | try_intx: |
1371 | /* Trying INTx */ | 1377 | /* Trying INTx */ |
1372 | ret = request_irq(ha->pdev->irq, ha->isp_ops->intr_handler, | 1378 | ret = request_irq(ha->pdev->irq, ha->isp_ops->intr_handler, |
@@ -1380,7 +1386,7 @@ try_intx: | |||
1380 | ql4_printk(KERN_WARNING, ha, | 1386 | ql4_printk(KERN_WARNING, ha, |
1381 | "INTx: Failed to reserve interrupt %d already in" | 1387 | "INTx: Failed to reserve interrupt %d already in" |
1382 | " use.\n", ha->pdev->irq); | 1388 | " use.\n", ha->pdev->irq); |
1383 | return ret; | 1389 | goto irq_not_attached; |
1384 | } | 1390 | } |
1385 | 1391 | ||
1386 | irq_attached: | 1392 | irq_attached: |
@@ -1388,6 +1394,7 @@ irq_attached: | |||
1388 | ha->host->irq = ha->pdev->irq; | 1394 | ha->host->irq = ha->pdev->irq; |
1389 | ql4_printk(KERN_INFO, ha, "%s: irq %d attached\n", | 1395 | ql4_printk(KERN_INFO, ha, "%s: irq %d attached\n", |
1390 | __func__, ha->pdev->irq); | 1396 | __func__, ha->pdev->irq); |
1397 | irq_not_attached: | ||
1391 | return ret; | 1398 | return ret; |
1392 | } | 1399 | } |
1393 | 1400 | ||