提交 b6d0d9d5 编写于 作者: G Giridhar Malavali 提交者: James Bottomley

[SCSI] qla2xxx: Don't capture minidump for ISP82xx on flash update from application.

Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 4dc77c36
...@@ -576,6 +576,7 @@ qla2x00_sysfs_write_reset(struct file *filp, struct kobject *kobj, ...@@ -576,6 +576,7 @@ qla2x00_sysfs_write_reset(struct file *filp, struct kobject *kobj,
scsi_block_requests(vha->host); scsi_block_requests(vha->host);
set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
if (IS_QLA82XX(ha)) { if (IS_QLA82XX(ha)) {
ha->flags.isp82xx_no_md_cap = 1;
qla82xx_idc_lock(ha); qla82xx_idc_lock(ha);
qla82xx_set_reset_owner(vha); qla82xx_set_reset_owner(vha);
qla82xx_idc_unlock(ha); qla82xx_idc_unlock(ha);
......
...@@ -1400,6 +1400,9 @@ qla2x00_update_optrom(struct fc_bsg_job *bsg_job) ...@@ -1400,6 +1400,9 @@ qla2x00_update_optrom(struct fc_bsg_job *bsg_job)
if (rval) if (rval)
return rval; return rval;
/* Set the isp82xx_no_md_cap not to capture minidump */
ha->flags.isp82xx_no_md_cap = 1;
sg_copy_to_buffer(bsg_job->request_payload.sg_list, sg_copy_to_buffer(bsg_job->request_payload.sg_list,
bsg_job->request_payload.sg_cnt, ha->optrom_buffer, bsg_job->request_payload.sg_cnt, ha->optrom_buffer,
ha->optrom_region_size); ha->optrom_region_size);
......
...@@ -2462,6 +2462,7 @@ struct qla_hw_data { ...@@ -2462,6 +2462,7 @@ struct qla_hw_data {
uint32_t thermal_supported:1; uint32_t thermal_supported:1;
uint32_t isp82xx_reset_hdlr_active:1; uint32_t isp82xx_reset_hdlr_active:1;
uint32_t isp82xx_reset_owner:1; uint32_t isp82xx_reset_owner:1;
uint32_t isp82xx_no_md_cap:1;
/* 28 bits */ /* 28 bits */
} flags; } flags;
......
...@@ -2050,7 +2050,7 @@ qla82xx_intr_handler(int irq, void *dev_id) ...@@ -2050,7 +2050,7 @@ qla82xx_intr_handler(int irq, void *dev_id)
rsp = (struct rsp_que *) dev_id; rsp = (struct rsp_que *) dev_id;
if (!rsp) { if (!rsp) {
ql_log(ql_log_info, NULL, 0xb054, ql_log(ql_log_info, NULL, 0xb053,
"%s: NULL response queue pointer.\n", __func__); "%s: NULL response queue pointer.\n", __func__);
return IRQ_NONE; return IRQ_NONE;
} }
...@@ -3128,7 +3128,7 @@ qla82xx_need_reset_handler(scsi_qla_host_t *vha) ...@@ -3128,7 +3128,7 @@ qla82xx_need_reset_handler(scsi_qla_host_t *vha)
if (ql2xmdenable) { if (ql2xmdenable) {
if (qla82xx_md_collect(vha)) if (qla82xx_md_collect(vha))
ql_log(ql_log_warn, vha, 0xb02c, ql_log(ql_log_warn, vha, 0xb02c,
"Not able to collect minidump.\n"); "Minidump not collected.\n");
} else } else
ql_log(ql_log_warn, vha, 0xb04f, ql_log(ql_log_warn, vha, 0xb04f,
"Minidump disabled.\n"); "Minidump disabled.\n");
...@@ -4137,6 +4137,14 @@ qla82xx_md_collect(scsi_qla_host_t *vha) ...@@ -4137,6 +4137,14 @@ qla82xx_md_collect(scsi_qla_host_t *vha)
goto md_failed; goto md_failed;
} }
if (ha->flags.isp82xx_no_md_cap) {
ql_log(ql_log_warn, vha, 0xb054,
"Forced reset from application, "
"ignore minidump capture\n");
ha->flags.isp82xx_no_md_cap = 0;
goto md_failed;
}
if (qla82xx_validate_template_chksum(vha)) { if (qla82xx_validate_template_chksum(vha)) {
ql_log(ql_log_info, vha, 0xb039, ql_log(ql_log_info, vha, 0xb039,
"Template checksum validation error\n"); "Template checksum validation error\n");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册