polling loops: change exit condition to
PATCH 19/21 polling loops: change exit condition to
* Maintained by: Jeff Garzik <[email protected]>
Signed-off-by Marcin Slusarz <[email protected]>
drivers/scsi/ahci.c +4 -4
@@ -790,7 +790,7 @@ static int ahci_host_init(struct ata_provoid __iomem *mmio = probe_ent->mmio_base;u32 tmp, cap_save;u16 tmp16; -unsigned int i, j, using_dac; +unsigned int i, using_dac;int rc;void __iomem *port_mmio;
@@ -862,6 +862,7 @@ static int ahci_host_init(struct ata_pro }for (i =0 ; i < probe_ent->n_ports; i++) { +unsigned long end_time;#if 0 /* BIOSen initialize this incorrectly */ if (!(hpriv->port_map & (1 << i)))continue ;
@@ -891,13 +892,12 @@ static int ahci_host_init(struct ata_prowritel (PORT_CMD_SPIN_UP , port_mmio +PORT_CMD ); - j =0 ; -while (j <100 ) { + end_time = jiffies +msecs_to_jiffies (1000 ); +while (time_before (jiffies, end_time)) {msleep (10 ); tmp =readl (port_mmio +PORT_SCR_STAT );if ((tmp &0xf ) =0x3 )break ; - j++; } tmp =readl (port_mmio +PORT_SCR_ERR );
MEGARAID SCSI DRIVERS
P: Neela Syam Kolli M: [email protected]
drivers/scsi/megaraid/megaraid_mbox.c +20 -12
@@ -2833,6 +2833,7 @@ mbox_post_sync_cmd(adapter_t *adapter, umbox_t *mbox;uint8_t status;int i; +unsigned long end_time; mbox64 = raid_dev->mbox64;
@@ -2864,25 +2865,27 @@ mbox_post_sync_cmd(adapter_t *adapter, uif (mbox->numstatus =0xFF ) {// status not yet available udelay (25 );; -for (i =0 ; mbox->numstatus =0xFF && i <1000 ; i++) { + end_time = jiffies +msecs_to_jiffies (1000 ); +while (mbox->numstatus =0xFF &&time_before (jiffies, end_time)) {rmb ();msleep (1 ); } -if (i =1000 ) { +if (time_after_eq (jiffies, end_time)) {con_log (CL_ANN , (KERN_NOTICE "megaraid mailbox: wait for FW to boot " )); + end_time = jiffies +msecs_to_jiffies (MBOX_RESET_WAIT *1000 );for (i =0 ; (mbox->numstatus =0xFF ) && - (i <MBOX_RESET_WAIT ); i++) { +time_before (jiffies, end_time); ++i) {rmb ();con_log (CL_ANN , ("\b\b\b\b\b[%03d]" ,MBOX_RESET_WAIT - i));msleep (1000 ); } -if (i =MBOX_RESET_WAIT ) { +if (time_after_eq (jiffies, end_time)) {con_log (CL_ANN , ("\nmegaraid mailbox: status not available\n" ));
@@ -2897,12 +2900,13 @@ mbox_post_sync_cmd(adapter_t *adapter, uif (mbox->poll !=0x77 ) {udelay (25 ); -for (i =0 ; (mbox->poll !=0x77 ) && (i <1000 ); i++) { + end_time = jiffies +msecs_to_jiffies (1000 ); +while ((mbox->poll !=0x77 ) &&time_before (jiffies, end_time)) {rmb ();msleep (1 ); } -if (i =1000 ) { +if (time_after_eq (jiffies, end_time)) {con_log (CL_ANN , (KERN_WARNING "megaraid mailbox: could not get poll semaphore\n" ));return -1 ;
@@ -2916,12 +2920,13 @@ mbox_post_sync_cmd(adapter_t *adapter, uif (RDINDOOR (raid_dev) &0x2 ) {udelay (25 ); -for (i =0 ; (RDINDOOR (raid_dev) &0x2 ) && (i <1000 ); i++) { + end_time = jiffies +msecs_to_jiffies (1000 ); +while ((RDINDOOR (raid_dev) &0x2 ) &&time_before (jiffies, end_time)) {rmb ();msleep (1 ); } -if (i =1000 ) { +if (time_after_eq (jiffies, end_time)) {con_log (CL_ANN , (KERN_WARNING "megaraid mailbox: could not acknowledge\n" ));return -1 ;
@@ -3011,16 +3016,19 @@ static int megaraid_busywait_mbox(mraid_device_t *raid_dev) {mbox_t *mbox = raid_dev->mbox; -int i =0 ; +unsigned long end_time;if (mbox->busy) {udelay (25 ); -for (i =0 ; mbox->busy && i <1000 ; i++) + end_time = jiffies +msecs_to_jiffies (1000 ); +while (mbox->busy &&time_before (jiffies, end_time))msleep (1 ); } -if (i <1000 )return 0 ; -else return -1 ; +if (mbox->busy) +return -1 ; +else +return 0 ; }
drivers/scsi/megaraid/megaraid_sas.c +8 -7
@@ -155,8 +155,7 @@ megasas_disable_intr(struct megasas_registatic int megasas_issue_polled (struct megasas_instance *instance,struct megasas_cmd *cmd) { -int i; -u32 msecs =MFI_POLL_TIMEOUT_SECS *1000 ; +unsigned long end_time;struct megasas_header *frame_hdr = &cmd->frame->hdr;
@@ -172,7 +171,8 @@ megasas_issue_polled(struct megasas_inst/* * Wait for cmd_status to change */ -for (i =0 ; (i < msecs) && (frame_hdr->cmd_status =0xff ); i++) { + end_time = jiffies +msecs_to_jiffies (MFI_POLL_TIMEOUT_SECS *1000 ); +while ((frame_hdr->cmd_status =0xff ) &&time_before (jiffies, end_time)) {rmb ();msleep (1 ); }
@@ -718,9 +718,9 @@ megasas_queue_command(struct scsi_cmnd *static int megasas_wait_for_outstanding (struct megasas_instance *instance) {int i; -u32 wait_time =MEGASAS_RESET_WAIT_TIME ; +unsigned long end_time = jiffies +msecs_to_jiffies (MEGASAS_RESET_WAIT_TIME *1000 ); -for (i =0 ; i < wait_time; i++) { +for (i =0 ;time_before (jiffies, end_time); ++i) {if (!instance->fw_outstanding)break ;
@@ -1169,10 +1169,10 @@ static irqreturn_t megasas_isr(int irq,static int megasas_transition_to_ready (struct megasas_register_set __iomem * reg_set) { -int i;u8 max_wait;u32 fw_state;u32 cur_state; +unsigned long end_time; fw_state =readl (®_set->outbound_msg_0) &MFI_STATE_MASK ;
@@ -1251,7 +1251,8 @@ megasas_transition_to_ready(struct megas/* * The cur_state should not last for more than max_wait secs */ -for (i =0 ; i < (max_wait *1000 ); i++) { + end_time = jiffies +msecs_to_jiffies (max_wait *1000 ); +while (time_before (jiffies, end_time)) { fw_state =MFI_STATE_MASK &readl (®_set->outbound_msg_0);
QLOGIC QLA2XXX FC-SCSI DRIVER
P: Andrew Vasquez
M: [email protected]
drivers/scsi/qla2xxx/qla_os.c +3 -4
@@ -2470,15 +2470,14 @@ qla2x00_timer(scsi_qla_host_t *ha)int qla2x00_down_timeout (struct semaphore *sema,unsigned long timeout) { -const unsigned int step =100 ;/* msecs */ -unsigned int iterations =jiffies_to_msecs (timeout)/100 ; +unsigned long end_time = jiffies + timeout;do {if (!down_trylock (sema))return 0 ; -if (msleep_interruptible (step)) +if (msleep_interruptible (100 ))break ; - }while (--iterations >=0 ); + }while (time_before (jiffies, end_time));return -ETIMEDOUT ; }
* Maintained by: Jeff Garzik <[email protected]>
drivers/scsi/sata_sx4.c +3 -1
@@ -1167,6 +1167,7 @@ static unsigned int pdc20621_prog_dimm_gu32 data, spd0;int error, i;void __iomem *mmio = pe->mmio_base; +unsigned long end_time;/* hard-code chip #0 */ mmio +=PDC_CHIP0_OFS ;
@@ -1198,7 +1199,8 @@ static unsigned int pdc20621_prog_dimm_gwritel (data, mmio +PDC_SDRAM_CONTROL_OFFSET ); error =1 ; -for (i =1 ; i <=10 ; i++) {/* polling ~5 secs */ + end_time = jiffies +msecs_to_jiffies (5600 ); +for (i =1 ;time_before (jiffies, end_time); ++i) {/* polling ~5 secs */ data =readl (mmio +PDC_SDRAM_CONTROL_OFFSET );if (!(data & (1 <<19 ))) { error =0 ;
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors