aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/qlge/qlge_dbg.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/qlge/qlge_dbg.c')
-rw-r--r--drivers/net/qlge/qlge_dbg.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/net/qlge/qlge_dbg.c b/drivers/net/qlge/qlge_dbg.c
index 913ca1e10e3..833cfd7a22c 100644
--- a/drivers/net/qlge/qlge_dbg.c
+++ b/drivers/net/qlge/qlge_dbg.c
@@ -647,6 +647,41 @@ int ql_core_dump(struct ql_adapter *qdev, struct ql_mpi_coredump *mpi_coredump)
647 "Failed RISC unpause. Status = 0x%.08x\n", status); 647 "Failed RISC unpause. Status = 0x%.08x\n", status);
648 goto err; 648 goto err;
649 } 649 }
650
651 /* Reset the RISC so we can dump RAM */
652 status = ql_hard_reset_mpi_risc(qdev);
653 if (status) {
654 QPRINTK(qdev, DRV, ERR,
655 "Failed RISC reset. Status = 0x%.08x\n", status);
656 goto err;
657 }
658
659 ql_build_coredump_seg_header(&mpi_coredump->code_ram_seg_hdr,
660 WCS_RAM_SEG_NUM,
661 sizeof(struct mpi_coredump_segment_header)
662 + sizeof(mpi_coredump->code_ram),
663 "WCS RAM");
664 status = ql_dump_risc_ram_area(qdev, &mpi_coredump->code_ram[0],
665 CODE_RAM_ADDR, CODE_RAM_CNT);
666 if (status) {
667 QPRINTK(qdev, DRV, ERR,
668 "Failed Dump of CODE RAM. Status = 0x%.08x\n", status);
669 goto err;
670 }
671
672 /* Insert the segment header */
673 ql_build_coredump_seg_header(&mpi_coredump->memc_ram_seg_hdr,
674 MEMC_RAM_SEG_NUM,
675 sizeof(struct mpi_coredump_segment_header)
676 + sizeof(mpi_coredump->memc_ram),
677 "MEMC RAM");
678 status = ql_dump_risc_ram_area(qdev, &mpi_coredump->memc_ram[0],
679 MEMC_RAM_ADDR, MEMC_RAM_CNT);
680 if (status) {
681 QPRINTK(qdev, DRV, ERR,
682 "Failed Dump of MEMC RAM. Status = 0x%.08x\n", status);
683 goto err;
684 }
650err: 685err:
651 ql_sem_unlock(qdev, SEM_PROC_REG_MASK); /* does flush too */ 686 ql_sem_unlock(qdev, SEM_PROC_REG_MASK); /* does flush too */
652 return status; 687 return status;