cciss: make fair timeouts during initialization
Subsystems (2)
PATCH 1/1 cciss: make fair timeouts during initialization
Patch makes fair initialization timeouts in cciss driver.
-----------------------------------
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.
Signature · 4 lines
Best regards, Konstantin Khorenko, SWsoft, Inc.
drivers/block/cciss.c renamed from drivers/block/cciss.c.16-rc5 +3 -5
@@ -1893,7 +1893,7 @@ static unsigned long pollcomplete(int ctfor (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 *cif (!(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 <[email protected]>