diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2009-10-13 18:16:46 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 13:00:10 -0500 |
commit | bdab23da71c36904693d276c8b28308dc94642aa (patch) | |
tree | 46a9d428346cdc70e0a828365757c9795899bde1 /drivers/scsi/qla2xxx/qla_isr.c | |
parent | 3420d36cac2f1d28fc99290de12dd66dfaf65d8e (diff) |
[SCSI] qla2xxx: Display additional mailbox registers during AEN handling.
The mailbox register values may assist in debugging efforts.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index b20a7169aac2..4d758d29523c 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -313,10 +313,11 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb) | |||
313 | static char *link_speeds[] = { "1", "2", "?", "4", "8", "10" }; | 313 | static char *link_speeds[] = { "1", "2", "?", "4", "8", "10" }; |
314 | char *link_speed; | 314 | char *link_speed; |
315 | uint16_t handle_cnt; | 315 | uint16_t handle_cnt; |
316 | uint16_t cnt; | 316 | uint16_t cnt, mbx; |
317 | uint32_t handles[5]; | 317 | uint32_t handles[5]; |
318 | struct qla_hw_data *ha = vha->hw; | 318 | struct qla_hw_data *ha = vha->hw; |
319 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; | 319 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; |
320 | struct device_reg_24xx __iomem *reg24 = &ha->iobase->isp24; | ||
320 | uint32_t rscn_entry, host_pid; | 321 | uint32_t rscn_entry, host_pid; |
321 | uint8_t rscn_queue_index; | 322 | uint8_t rscn_queue_index; |
322 | unsigned long flags; | 323 | unsigned long flags; |
@@ -395,9 +396,10 @@ skip_rio: | |||
395 | break; | 396 | break; |
396 | 397 | ||
397 | case MBA_SYSTEM_ERR: /* System Error */ | 398 | case MBA_SYSTEM_ERR: /* System Error */ |
399 | mbx = IS_QLA81XX(ha) ? RD_REG_WORD(®24->mailbox7) : 0; | ||
398 | qla_printk(KERN_INFO, ha, | 400 | qla_printk(KERN_INFO, ha, |
399 | "ISP System Error - mbx1=%xh mbx2=%xh mbx3=%xh.\n", | 401 | "ISP System Error - mbx1=%xh mbx2=%xh mbx3=%xh " |
400 | mb[1], mb[2], mb[3]); | 402 | "mbx7=%xh.\n", mb[1], mb[2], mb[3], mbx); |
401 | 403 | ||
402 | ha->isp_ops->fw_dump(vha, 1); | 404 | ha->isp_ops->fw_dump(vha, 1); |
403 | 405 | ||
@@ -419,9 +421,10 @@ skip_rio: | |||
419 | break; | 421 | break; |
420 | 422 | ||
421 | case MBA_REQ_TRANSFER_ERR: /* Request Transfer Error */ | 423 | case MBA_REQ_TRANSFER_ERR: /* Request Transfer Error */ |
422 | DEBUG2(printk("scsi(%ld): ISP Request Transfer Error.\n", | 424 | DEBUG2(printk("scsi(%ld): ISP Request Transfer Error (%x).\n", |
423 | vha->host_no)); | 425 | vha->host_no, mb[1])); |
424 | qla_printk(KERN_WARNING, ha, "ISP Request Transfer Error.\n"); | 426 | qla_printk(KERN_WARNING, ha, |
427 | "ISP Request Transfer Error (%x).\n", mb[1]); | ||
425 | 428 | ||
426 | set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); | 429 | set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); |
427 | break; | 430 | break; |
@@ -485,10 +488,13 @@ skip_rio: | |||
485 | break; | 488 | break; |
486 | 489 | ||
487 | case MBA_LOOP_DOWN: /* Loop Down Event */ | 490 | case MBA_LOOP_DOWN: /* Loop Down Event */ |
491 | mbx = IS_QLA81XX(ha) ? RD_REG_WORD(®24->mailbox4) : 0; | ||
488 | DEBUG2(printk("scsi(%ld): Asynchronous LOOP DOWN " | 492 | DEBUG2(printk("scsi(%ld): Asynchronous LOOP DOWN " |
489 | "(%x %x %x).\n", vha->host_no, mb[1], mb[2], mb[3])); | 493 | "(%x %x %x %x).\n", vha->host_no, mb[1], mb[2], mb[3], |
490 | qla_printk(KERN_INFO, ha, "LOOP DOWN detected (%x %x %x).\n", | 494 | mbx)); |
491 | mb[1], mb[2], mb[3]); | 495 | qla_printk(KERN_INFO, ha, |
496 | "LOOP DOWN detected (%x %x %x %x).\n", mb[1], mb[2], mb[3], | ||
497 | mbx); | ||
492 | 498 | ||
493 | if (atomic_read(&vha->loop_state) != LOOP_DOWN) { | 499 | if (atomic_read(&vha->loop_state) != LOOP_DOWN) { |
494 | atomic_set(&vha->loop_state, LOOP_DOWN); | 500 | atomic_set(&vha->loop_state, LOOP_DOWN); |