qla2xxx: Don't check for firmware hung during the reset context for ISP82XX.
Signed-off-by: Tej Prakash <tej.prakash@qlogic.com> Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
638a1a01d3
commit
03d32f978a
@ -2852,47 +2852,30 @@ static int
|
|||||||
qla82xx_device_bootstrap(scsi_qla_host_t *vha)
|
qla82xx_device_bootstrap(scsi_qla_host_t *vha)
|
||||||
{
|
{
|
||||||
int rval = QLA_SUCCESS;
|
int rval = QLA_SUCCESS;
|
||||||
int i, timeout;
|
int i;
|
||||||
uint32_t old_count, count;
|
uint32_t old_count, count;
|
||||||
struct qla_hw_data *ha = vha->hw;
|
struct qla_hw_data *ha = vha->hw;
|
||||||
int need_reset = 0, peg_stuck = 1;
|
int need_reset = 0;
|
||||||
|
|
||||||
need_reset = qla82xx_need_reset(ha);
|
need_reset = qla82xx_need_reset(ha);
|
||||||
|
|
||||||
old_count = qla82xx_rd_32(ha, QLA82XX_PEG_ALIVE_COUNTER);
|
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
|
||||||
timeout = msleep_interruptible(200);
|
|
||||||
if (timeout) {
|
|
||||||
qla82xx_wr_32(ha, QLA82XX_CRB_DEV_STATE,
|
|
||||||
QLA8XXX_DEV_FAILED);
|
|
||||||
return QLA_FUNCTION_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
count = qla82xx_rd_32(ha, QLA82XX_PEG_ALIVE_COUNTER);
|
|
||||||
if (count != old_count)
|
|
||||||
peg_stuck = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (need_reset) {
|
if (need_reset) {
|
||||||
/* We are trying to perform a recovery here. */
|
/* We are trying to perform a recovery here. */
|
||||||
if (peg_stuck)
|
if (ha->flags.isp82xx_fw_hung)
|
||||||
qla82xx_rom_lock_recovery(ha);
|
qla82xx_rom_lock_recovery(ha);
|
||||||
goto dev_initialize;
|
|
||||||
} else {
|
} else {
|
||||||
/* Start of day for this ha context. */
|
old_count = qla82xx_rd_32(ha, QLA82XX_PEG_ALIVE_COUNTER);
|
||||||
if (peg_stuck) {
|
for (i = 0; i < 10; i++) {
|
||||||
/* Either we are the first or recovery in progress. */
|
msleep(200);
|
||||||
qla82xx_rom_lock_recovery(ha);
|
count = qla82xx_rd_32(ha, QLA82XX_PEG_ALIVE_COUNTER);
|
||||||
goto dev_initialize;
|
if (count != old_count) {
|
||||||
} else
|
rval = QLA_SUCCESS;
|
||||||
/* Firmware already running. */
|
|
||||||
goto dev_ready;
|
goto dev_ready;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
qla82xx_rom_lock_recovery(ha);
|
||||||
|
}
|
||||||
|
|
||||||
return rval;
|
|
||||||
|
|
||||||
dev_initialize:
|
|
||||||
/* set to DEV_INITIALIZING */
|
/* set to DEV_INITIALIZING */
|
||||||
ql_log(ql_log_info, vha, 0x009e,
|
ql_log(ql_log_info, vha, 0x009e,
|
||||||
"HW State: INITIALIZING.\n");
|
"HW State: INITIALIZING.\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user