aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Hammer <jack_hammer@adaptec.com>2006-01-24 14:43:41 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2006-01-26 08:18:23 -0500
commit15084a4a63bc300c18b28a8a9afac870c552abce (patch)
tree0809ff6ec0a1bee755dce7a42f79c73eddb8f85f
parent77427f514f88143bfef41ba8c1e624bc45f42297 (diff)
[SCSI] ips soft lockup during reset/initialization
Resetting the adapter causes the ServeRAID driver to exceed the max time allowed by the softlock watchdog. Resetting the hardware can easily require 30 or more seconds. To avoid the "BUG: soft lockup detected on CPU#0!" result, this patch replaces the mdelay() calls in the initialization/reset routines with msleep(). Signed-off-by: Jack Hammer <jack_hammer@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r--drivers/scsi/ips.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c
index e5e1ca44e1ee..32d592befca6 100644
--- a/drivers/scsi/ips.c
+++ b/drivers/scsi/ips.c
@@ -5012,7 +5012,7 @@ ips_init_copperhead(ips_ha_t * ha)
5012 break; 5012 break;
5013 5013
5014 /* Delay for 1 Second */ 5014 /* Delay for 1 Second */
5015 MDELAY(IPS_ONE_SEC); 5015 msleep(IPS_ONE_SEC);
5016 } 5016 }
5017 5017
5018 if (j >= 45) 5018 if (j >= 45)
@@ -5038,7 +5038,7 @@ ips_init_copperhead(ips_ha_t * ha)
5038 break; 5038 break;
5039 5039
5040 /* Delay for 1 Second */ 5040 /* Delay for 1 Second */
5041 MDELAY(IPS_ONE_SEC); 5041 msleep(IPS_ONE_SEC);
5042 } 5042 }
5043 5043
5044 if (j >= 240) 5044 if (j >= 240)
@@ -5056,7 +5056,7 @@ ips_init_copperhead(ips_ha_t * ha)
5056 break; 5056 break;
5057 5057
5058 /* Delay for 1 Second */ 5058 /* Delay for 1 Second */
5059 MDELAY(IPS_ONE_SEC); 5059 msleep(IPS_ONE_SEC);
5060 } 5060 }
5061 5061
5062 if (i >= 240) 5062 if (i >= 240)
@@ -5106,7 +5106,7 @@ ips_init_copperhead_memio(ips_ha_t * ha)
5106 break; 5106 break;
5107 5107
5108 /* Delay for 1 Second */ 5108 /* Delay for 1 Second */
5109 MDELAY(IPS_ONE_SEC); 5109 msleep(IPS_ONE_SEC);
5110 } 5110 }
5111 5111
5112 if (j >= 45) 5112 if (j >= 45)
@@ -5132,7 +5132,7 @@ ips_init_copperhead_memio(ips_ha_t * ha)
5132 break; 5132 break;
5133 5133
5134 /* Delay for 1 Second */ 5134 /* Delay for 1 Second */
5135 MDELAY(IPS_ONE_SEC); 5135 msleep(IPS_ONE_SEC);
5136 } 5136 }
5137 5137
5138 if (j >= 240) 5138 if (j >= 240)
@@ -5150,7 +5150,7 @@ ips_init_copperhead_memio(ips_ha_t * ha)
5150 break; 5150 break;
5151 5151
5152 /* Delay for 1 Second */ 5152 /* Delay for 1 Second */
5153 MDELAY(IPS_ONE_SEC); 5153 msleep(IPS_ONE_SEC);
5154 } 5154 }
5155 5155
5156 if (i >= 240) 5156 if (i >= 240)
@@ -5202,7 +5202,7 @@ ips_init_morpheus(ips_ha_t * ha)
5202 break; 5202 break;
5203 5203
5204 /* Delay for 1 Second */ 5204 /* Delay for 1 Second */
5205 MDELAY(IPS_ONE_SEC); 5205 msleep(IPS_ONE_SEC);
5206 } 5206 }
5207 5207
5208 if (i >= 45) { 5208 if (i >= 45) {
@@ -5228,7 +5228,7 @@ ips_init_morpheus(ips_ha_t * ha)
5228 if (Post != 0x4F00) 5228 if (Post != 0x4F00)
5229 break; 5229 break;
5230 /* Delay for 1 Second */ 5230 /* Delay for 1 Second */
5231 MDELAY(IPS_ONE_SEC); 5231 msleep(IPS_ONE_SEC);
5232 } 5232 }
5233 5233
5234 if (i >= 120) { 5234 if (i >= 120) {
@@ -5258,7 +5258,7 @@ ips_init_morpheus(ips_ha_t * ha)
5258 break; 5258 break;
5259 5259
5260 /* Delay for 1 Second */ 5260 /* Delay for 1 Second */
5261 MDELAY(IPS_ONE_SEC); 5261 msleep(IPS_ONE_SEC);
5262 } 5262 }
5263 5263
5264 if (i >= 240) { 5264 if (i >= 240) {
@@ -5318,12 +5318,12 @@ ips_reset_copperhead(ips_ha_t * ha)
5318 outb(IPS_BIT_RST, ha->io_addr + IPS_REG_SCPR); 5318 outb(IPS_BIT_RST, ha->io_addr + IPS_REG_SCPR);
5319 5319
5320 /* Delay for 1 Second */ 5320 /* Delay for 1 Second */
5321 MDELAY(IPS_ONE_SEC); 5321 msleep(IPS_ONE_SEC);
5322 5322
5323 outb(0, ha->io_addr + IPS_REG_SCPR); 5323 outb(0, ha->io_addr + IPS_REG_SCPR);
5324 5324
5325 /* Delay for 1 Second */ 5325 /* Delay for 1 Second */
5326 MDELAY(IPS_ONE_SEC); 5326 msleep(IPS_ONE_SEC);
5327 5327
5328 if ((*ha->func.init) (ha)) 5328 if ((*ha->func.init) (ha))
5329 break; 5329 break;
@@ -5363,12 +5363,12 @@ ips_reset_copperhead_memio(ips_ha_t * ha)
5363 writeb(IPS_BIT_RST, ha->mem_ptr + IPS_REG_SCPR); 5363 writeb(IPS_BIT_RST, ha->mem_ptr + IPS_REG_SCPR);
5364 5364
5365 /* Delay for 1 Second */ 5365 /* Delay for 1 Second */
5366 MDELAY(IPS_ONE_SEC); 5366 msleep(IPS_ONE_SEC);
5367 5367
5368 writeb(0, ha->mem_ptr + IPS_REG_SCPR); 5368 writeb(0, ha->mem_ptr + IPS_REG_SCPR);
5369 5369
5370 /* Delay for 1 Second */ 5370 /* Delay for 1 Second */
5371 MDELAY(IPS_ONE_SEC); 5371 msleep(IPS_ONE_SEC);
5372 5372
5373 if ((*ha->func.init) (ha)) 5373 if ((*ha->func.init) (ha))
5374 break; 5374 break;
@@ -5409,7 +5409,7 @@ ips_reset_morpheus(ips_ha_t * ha)
5409 writel(0x80000000, ha->mem_ptr + IPS_REG_I960_IDR); 5409 writel(0x80000000, ha->mem_ptr + IPS_REG_I960_IDR);
5410 5410
5411 /* Delay for 5 Seconds */ 5411 /* Delay for 5 Seconds */
5412 MDELAY(5 * IPS_ONE_SEC); 5412 msleep(5 * IPS_ONE_SEC);
5413 5413
5414 /* Do a PCI config read to wait for adapter */ 5414 /* Do a PCI config read to wait for adapter */
5415 pci_read_config_byte(ha->pcidev, 4, &junk); 5415 pci_read_config_byte(ha->pcidev, 4, &junk);