diff options
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_83xx.c | 16 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_def.h | 1 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_nx.c | 15 |
3 files changed, 15 insertions, 17 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_83xx.c b/drivers/scsi/qla4xxx/ql4_83xx.c index c105b6eebf2b..2eba35365920 100644 --- a/drivers/scsi/qla4xxx/ql4_83xx.c +++ b/drivers/scsi/qla4xxx/ql4_83xx.c | |||
@@ -1304,12 +1304,24 @@ static void qla4_83xx_process_init_seq(struct scsi_qla_host *ha) | |||
1304 | static int qla4_83xx_restart(struct scsi_qla_host *ha) | 1304 | static int qla4_83xx_restart(struct scsi_qla_host *ha) |
1305 | { | 1305 | { |
1306 | int ret_val = QLA_SUCCESS; | 1306 | int ret_val = QLA_SUCCESS; |
1307 | uint32_t idc_ctrl; | ||
1307 | 1308 | ||
1308 | qla4_83xx_process_stop_seq(ha); | 1309 | qla4_83xx_process_stop_seq(ha); |
1309 | 1310 | ||
1310 | /* Collect minidump*/ | 1311 | /* |
1311 | if (!test_and_clear_bit(AF_83XX_NO_FW_DUMP, &ha->flags)) | 1312 | * Collect minidump. |
1313 | * If IDC_CTRL BIT1 is set, clear it on going to INIT state and | ||
1314 | * don't collect minidump | ||
1315 | */ | ||
1316 | idc_ctrl = qla4_83xx_rd_reg(ha, QLA83XX_IDC_DRV_CTRL); | ||
1317 | if (idc_ctrl & GRACEFUL_RESET_BIT1) { | ||
1318 | qla4_83xx_wr_reg(ha, QLA83XX_IDC_DRV_CTRL, | ||
1319 | (idc_ctrl & ~GRACEFUL_RESET_BIT1)); | ||
1320 | ql4_printk(KERN_INFO, ha, "%s: Graceful RESET: Not collecting minidump\n", | ||
1321 | __func__); | ||
1322 | } else { | ||
1312 | qla4_8xxx_get_minidump(ha); | 1323 | qla4_8xxx_get_minidump(ha); |
1324 | } | ||
1313 | 1325 | ||
1314 | qla4_83xx_process_init_seq(ha); | 1326 | qla4_83xx_process_init_seq(ha); |
1315 | 1327 | ||
diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h index e9df4ad37a6b..52363375d484 100644 --- a/drivers/scsi/qla4xxx/ql4_def.h +++ b/drivers/scsi/qla4xxx/ql4_def.h | |||
@@ -580,7 +580,6 @@ struct scsi_qla_host { | |||
580 | #define AF_82XX_FW_DUMPED 24 /* 0x01000000 */ | 580 | #define AF_82XX_FW_DUMPED 24 /* 0x01000000 */ |
581 | #define AF_8XXX_RST_OWNER 25 /* 0x02000000 */ | 581 | #define AF_8XXX_RST_OWNER 25 /* 0x02000000 */ |
582 | #define AF_82XX_DUMP_READING 26 /* 0x04000000 */ | 582 | #define AF_82XX_DUMP_READING 26 /* 0x04000000 */ |
583 | #define AF_83XX_NO_FW_DUMP 27 /* 0x08000000 */ | ||
584 | #define AF_83XX_IOCB_INTR_ON 28 /* 0x10000000 */ | 583 | #define AF_83XX_IOCB_INTR_ON 28 /* 0x10000000 */ |
585 | #define AF_83XX_MBOX_INTR_ON 29 /* 0x20000000 */ | 584 | #define AF_83XX_MBOX_INTR_ON 29 /* 0x20000000 */ |
586 | 585 | ||
diff --git a/drivers/scsi/qla4xxx/ql4_nx.c b/drivers/scsi/qla4xxx/ql4_nx.c index bbe836146837..0ec07ecd5fa2 100644 --- a/drivers/scsi/qla4xxx/ql4_nx.c +++ b/drivers/scsi/qla4xxx/ql4_nx.c | |||
@@ -2821,7 +2821,7 @@ int qla4_8xxx_device_bootstrap(struct scsi_qla_host *ha) | |||
2821 | { | 2821 | { |
2822 | int rval = QLA_ERROR; | 2822 | int rval = QLA_ERROR; |
2823 | int i, timeout; | 2823 | int i, timeout; |
2824 | uint32_t old_count, count, idc_ctrl; | 2824 | uint32_t old_count, count; |
2825 | int need_reset = 0, peg_stuck = 1; | 2825 | int need_reset = 0, peg_stuck = 1; |
2826 | 2826 | ||
2827 | need_reset = ha->isp_ops->need_reset(ha); | 2827 | need_reset = ha->isp_ops->need_reset(ha); |
@@ -2864,19 +2864,6 @@ dev_initialize: | |||
2864 | qla4_8xxx_wr_direct(ha, QLA8XXX_CRB_DEV_STATE, | 2864 | qla4_8xxx_wr_direct(ha, QLA8XXX_CRB_DEV_STATE, |
2865 | QLA8XXX_DEV_INITIALIZING); | 2865 | QLA8XXX_DEV_INITIALIZING); |
2866 | 2866 | ||
2867 | /* | ||
2868 | * For ISP8324 and ISP8042, if IDC_CTRL GRACEFUL_RESET_BIT1 is set, | ||
2869 | * reset it after device goes to INIT state. | ||
2870 | */ | ||
2871 | if (is_qla8032(ha) || is_qla8042(ha)) { | ||
2872 | idc_ctrl = qla4_83xx_rd_reg(ha, QLA83XX_IDC_DRV_CTRL); | ||
2873 | if (idc_ctrl & GRACEFUL_RESET_BIT1) { | ||
2874 | qla4_83xx_wr_reg(ha, QLA83XX_IDC_DRV_CTRL, | ||
2875 | (idc_ctrl & ~GRACEFUL_RESET_BIT1)); | ||
2876 | set_bit(AF_83XX_NO_FW_DUMP, &ha->flags); | ||
2877 | } | ||
2878 | } | ||
2879 | |||
2880 | ha->isp_ops->idc_unlock(ha); | 2867 | ha->isp_ops->idc_unlock(ha); |
2881 | 2868 | ||
2882 | if (is_qla8022(ha)) | 2869 | if (is_qla8022(ha)) |