Patch makes fair initialization timeouts in cciss driver. Signed-off-by: Konstantin Khorenko <khorenko@xxxxx> ----------------------------------- 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@xxxxx>