Commit 40a2e34a authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley

[SCSI] qla2xxx: Add cond_resched() calls during HBA flash manipulation.

We're observing soft lockups during HBA FLASH retrieval and
update.  Add cond_resched() each time around the tight-loops
during flash read()s/write()s.
Signed-off-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent ed677086
...@@ -466,6 +466,7 @@ qla24xx_read_flash_dword(scsi_qla_host_t *ha, uint32_t addr) ...@@ -466,6 +466,7 @@ qla24xx_read_flash_dword(scsi_qla_host_t *ha, uint32_t addr)
udelay(10); udelay(10);
else else
rval = QLA_FUNCTION_TIMEOUT; rval = QLA_FUNCTION_TIMEOUT;
cond_resched();
} }
/* TODO: What happens if we time out? */ /* TODO: What happens if we time out? */
...@@ -508,6 +509,7 @@ qla24xx_write_flash_dword(scsi_qla_host_t *ha, uint32_t addr, uint32_t data) ...@@ -508,6 +509,7 @@ qla24xx_write_flash_dword(scsi_qla_host_t *ha, uint32_t addr, uint32_t data)
udelay(10); udelay(10);
else else
rval = QLA_FUNCTION_TIMEOUT; rval = QLA_FUNCTION_TIMEOUT;
cond_resched();
} }
return rval; return rval;
} }
...@@ -1255,6 +1257,7 @@ qla2x00_poll_flash(scsi_qla_host_t *ha, uint32_t addr, uint8_t poll_data, ...@@ -1255,6 +1257,7 @@ qla2x00_poll_flash(scsi_qla_host_t *ha, uint32_t addr, uint8_t poll_data,
} }
udelay(10); udelay(10);
barrier(); barrier();
cond_resched();
} }
return status; return status;
} }
...@@ -1403,6 +1406,7 @@ qla2x00_read_flash_data(scsi_qla_host_t *ha, uint8_t *tmp_buf, uint32_t saddr, ...@@ -1403,6 +1406,7 @@ qla2x00_read_flash_data(scsi_qla_host_t *ha, uint8_t *tmp_buf, uint32_t saddr,
if (saddr % 100) if (saddr % 100)
udelay(10); udelay(10);
*tmp_buf = data; *tmp_buf = data;
cond_resched();
} }
} }
...@@ -1689,6 +1693,7 @@ qla2x00_write_optrom_data(struct scsi_qla_host *ha, uint8_t *buf, ...@@ -1689,6 +1693,7 @@ qla2x00_write_optrom_data(struct scsi_qla_host *ha, uint8_t *buf,
rval = QLA_FUNCTION_FAILED; rval = QLA_FUNCTION_FAILED;
break; break;
} }
cond_resched();
} }
} while (0); } while (0);
qla2x00_flash_disable(ha); qla2x00_flash_disable(ha);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment