diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2007-03-12 13:41:28 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-03-20 11:50:30 -0400 |
commit | 40a2e34a94c336b716f631b2952d233e1ba76e3c (patch) | |
tree | 340b3bc993fad1854a858c725417fb8d8f10e534 /drivers/scsi/qla2xxx/qla_sup.c | |
parent | ed6770863945e6695f403c7b951395dab298c392 (diff) |
[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: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_sup.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_sup.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c index ff1dd4175a7f..362d041419fc 100644 --- a/drivers/scsi/qla2xxx/qla_sup.c +++ b/drivers/scsi/qla2xxx/qla_sup.c | |||
@@ -466,6 +466,7 @@ qla24xx_read_flash_dword(scsi_qla_host_t *ha, uint32_t addr) | |||
466 | udelay(10); | 466 | udelay(10); |
467 | else | 467 | else |
468 | rval = QLA_FUNCTION_TIMEOUT; | 468 | rval = QLA_FUNCTION_TIMEOUT; |
469 | cond_resched(); | ||
469 | } | 470 | } |
470 | 471 | ||
471 | /* TODO: What happens if we time out? */ | 472 | /* 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 | udelay(10); | 509 | udelay(10); |
509 | else | 510 | else |
510 | rval = QLA_FUNCTION_TIMEOUT; | 511 | rval = QLA_FUNCTION_TIMEOUT; |
512 | cond_resched(); | ||
511 | } | 513 | } |
512 | return rval; | 514 | return rval; |
513 | } | 515 | } |
@@ -1255,6 +1257,7 @@ qla2x00_poll_flash(scsi_qla_host_t *ha, uint32_t addr, uint8_t poll_data, | |||
1255 | } | 1257 | } |
1256 | udelay(10); | 1258 | udelay(10); |
1257 | barrier(); | 1259 | barrier(); |
1260 | cond_resched(); | ||
1258 | } | 1261 | } |
1259 | return status; | 1262 | return status; |
1260 | } | 1263 | } |
@@ -1403,6 +1406,7 @@ qla2x00_read_flash_data(scsi_qla_host_t *ha, uint8_t *tmp_buf, uint32_t saddr, | |||
1403 | if (saddr % 100) | 1406 | if (saddr % 100) |
1404 | udelay(10); | 1407 | udelay(10); |
1405 | *tmp_buf = data; | 1408 | *tmp_buf = data; |
1409 | cond_resched(); | ||
1406 | } | 1410 | } |
1407 | } | 1411 | } |
1408 | 1412 | ||
@@ -1689,6 +1693,7 @@ update_flash: | |||
1689 | rval = QLA_FUNCTION_FAILED; | 1693 | rval = QLA_FUNCTION_FAILED; |
1690 | break; | 1694 | break; |
1691 | } | 1695 | } |
1696 | cond_resched(); | ||
1692 | } | 1697 | } |
1693 | } while (0); | 1698 | } while (0); |
1694 | qla2x00_flash_disable(ha); | 1699 | qla2x00_flash_disable(ha); |