aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-04-03 16:13:19 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-04-07 13:19:13 -0400
commitcb8dacbf1110d8bd39413f3116ff1720f757854e (patch)
tree8d58f215c7a1091f7e760359c56d1316d9c80f7d /drivers/scsi/qla2xxx/qla_isr.c
parent0971de7f56f809f40edae6fd372745e429e970e9 (diff)
[SCSI] qla2xxx: Add hardware trace-logging support.
Recent ISPs have a region within FLASH which acts as a repository for the logging of serious hardware and software failures. Currently, the region is large enough to support up to 255 entries. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index e9d8a79dd6a4..088464251d7e 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -349,6 +349,7 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
349 "ISP System Error - mbx1=%xh mbx2=%xh mbx3=%xh.\n", 349 "ISP System Error - mbx1=%xh mbx2=%xh mbx3=%xh.\n",
350 mb[1], mb[2], mb[3]); 350 mb[1], mb[2], mb[3]);
351 351
352 qla2x00_post_hwe_work(ha, mb[0], mb[1], mb[2], mb[3]);
352 ha->isp_ops->fw_dump(ha, 1); 353 ha->isp_ops->fw_dump(ha, 1);
353 354
354 if (IS_FWI2_CAPABLE(ha)) { 355 if (IS_FWI2_CAPABLE(ha)) {
@@ -373,6 +374,7 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
373 ha->host_no)); 374 ha->host_no));
374 qla_printk(KERN_WARNING, ha, "ISP Request Transfer Error.\n"); 375 qla_printk(KERN_WARNING, ha, "ISP Request Transfer Error.\n");
375 376
377 qla2x00_post_hwe_work(ha, mb[0], mb[1], mb[2], mb[3]);
376 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 378 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
377 break; 379 break;
378 380
@@ -381,6 +383,7 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
381 ha->host_no)); 383 ha->host_no));
382 qla_printk(KERN_WARNING, ha, "ISP Response Transfer Error.\n"); 384 qla_printk(KERN_WARNING, ha, "ISP Response Transfer Error.\n");
383 385
386 qla2x00_post_hwe_work(ha, mb[0], mb[1], mb[2], mb[3]);
384 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 387 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
385 break; 388 break;
386 389
@@ -1558,6 +1561,12 @@ qla24xx_intr_handler(int irq, void *dev_id)
1558 if (pci_channel_offline(ha->pdev)) 1561 if (pci_channel_offline(ha->pdev))
1559 break; 1562 break;
1560 1563
1564 if (ha->hw_event_pause_errors == 0)
1565 qla2x00_post_hwe_work(ha, HW_EVENT_PARITY_ERR,
1566 0, MSW(stat), LSW(stat));
1567 else if (ha->hw_event_pause_errors < 0xffffffff)
1568 ha->hw_event_pause_errors++;
1569
1561 hccr = RD_REG_DWORD(&reg->hccr); 1570 hccr = RD_REG_DWORD(&reg->hccr);
1562 1571
1563 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, " 1572 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, "
@@ -1693,6 +1702,12 @@ qla24xx_msix_default(int irq, void *dev_id)
1693 if (pci_channel_offline(ha->pdev)) 1702 if (pci_channel_offline(ha->pdev))
1694 break; 1703 break;
1695 1704
1705 if (ha->hw_event_pause_errors == 0)
1706 qla2x00_post_hwe_work(ha, HW_EVENT_PARITY_ERR,
1707 0, MSW(stat), LSW(stat));
1708 else if (ha->hw_event_pause_errors < 0xffffffff)
1709 ha->hw_event_pause_errors++;
1710
1696 hccr = RD_REG_DWORD(&reg->hccr); 1711 hccr = RD_REG_DWORD(&reg->hccr);
1697 1712
1698 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, " 1713 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, "