diff options
Diffstat (limited to 'drivers/net/qlge/qlge_dbg.c')
-rw-r--r-- | drivers/net/qlge/qlge_dbg.c | 35 |
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 | } | ||
650 | err: | 685 | err: |
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; |