OpenVZ Forum


Home » Mailing lists » Devel » [patch scsi] cciss: make fair timeouts during initialization
[patch scsi] cciss: make fair timeouts during initialization [message #1868] Thu, 02 March 2006 07:10
khorenko is currently offline  khorenko
Messages: 533
Registered: January 2006
Location: Moscow, Russia
Senior Member
Patch makes fair initialization timeouts in cciss driver.

Signed-off-by: Konstantin Khorenko <khorenko@sw.ru>

-----------------------------------
cciss driver has following code for timeouts during board initialization:
...
for(i=0;i<MAX_CONFIG_WAIT;i++) {
...
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(10);
}
...

We compile cciss driver into the kernel and thus at the kernel boot
schedule_timeout() returns very quickly and resulted timeouts became
insufficient for correct board initialization.
Particularly, we often got following error:
--
HP CISS Driver (v 2.6.8)
cciss: Device 0x46 has been found at bus 6 dev 1 func 0
cciss: unable to get board into simple mode
cciss: probe of 0000:06:01.0 failed with error -1
--

The patch is designed to make fair initialization timeouts.

----------
Hope, you'll check this changes and find them usefull. :)
Kernel with patch was compiled and tested on two nodes.
This patch is against mainstream 2.6.16-rc5 kernel.

--
Best regards,

Konstantin Khorenko,
SWsoft, Inc.

--- ./drivers/block/cciss.c.16-rc5 2006-03-01 11:13:03.000000000 +0300
+++ ./drivers/block/cciss.c 2006-03-02 09:30:38.000000000 +0300
@@ -1893,7 +1893,7 @@ static unsigned long pollcomplete(int ct
for (i = 20 * HZ; i > 0; i--) {
done = hba[ctlr]->access.command_completed(hba[ctlr]);
if (done == FIFO_EMPTY)
- schedule_timeout_uninterruptible(1);
+ msleep(1);
else
return (done);
}
@@ -2817,8 +2817,7 @@ static int cciss_pci_init(ctlr_info_t *c
scratchpad = readl(c->vaddr + SA5_SCRATCHPAD_OFFSET);
if (scratchpad == CCISS_FIRMWARE_READY)
break;
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ / 10); /* wait 100ms */
+ msleep(100); /* wait 100ms */
}
if (scratchpad != CCISS_FIRMWARE_READY) {
printk(KERN_WARNING "cciss: Board not ready. Timed out.\n");
@@ -2903,8 +2902,7 @@ static int cciss_pci_init(ctlr_info_t *c
if (!(readl(c->vaddr + SA5_DOORBELL) & CFGTBL_ChangeReq))
break;
/* delay and try again */
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(10);
+ msleep(10);
}

#ifdef CCISS_DEBUG
#
# Patch makes fair initialization timeouts in cciss driver.
#
# Signed-off-by: Konstantin Khorenko <khorenko@sw.ru>
Previous Topic: Which of the virtualization approaches is more suitable for kernel?
Next Topic: [PATCH I2O] memory leak in i2o_exec_lct_modified
Goto Forum:
  


Current Time: Fri Jul 25 17:52:22 GMT 2025

Total time taken to generate the page: 0.18170 seconds