Against test8pre1

Every one that doesn't check interrupts has just been made UNINTERRUPTIBLE.
This is not clearly right for some of these, but maintainers need to fix these up ... ?

sorry for the mass mailing

thanks
john

--- drivers/net/wan/comx-hw-comx.c      Mon Jul 10 03:15:29 2000
+++ drivers/net/wan/comx-hw-comx.c.new  Fri Sep  1 02:46:44 2000
@@ -487,6 +487,7 @@
        COMX_CMD(dev, COMX_CMD_INIT); 
        jiffs = jiffies;
        while (COMX_readw(dev, OFF_A_L2_LINKUP) != 1 && jiffies < jiffs + HZ) {
+               set_current_state(TASK_UNINTERRUPTIBLE);
                schedule_timeout(1);
        }
        
--- drivers/sound/es1371.c      Sat Aug 26 16:26:49 2000
+++ drivers/sound/es1371.c.new  Fri Sep  1 02:52:30 2000
@@ -2812,6 +2812,7 @@
                        tmo2 = tmo - jiffies;
                        if (tmo2 <= 0)
                                break;
+                       set_current_state(TASK_UNINTERRUPTIBLE);
                        schedule_timeout(tmo2);
                }
        }
--- drivers/isdn/icn/icn.c      Sat Aug 26 16:26:34 2000
+++ drivers/isdn/icn/icn.c.new  Fri Sep  1 02:55:13 2000
@@ -1491,8 +1491,10 @@
                                                if (!card->leased) {
                                                        card->leased = 1;
                                                        while (card->ptype == 
ISDN_PTYPE_UNKNOWN) {
+                                                               
+set_current_state(TASK_UNINTERRUPTIBLE);
                                                                
schedule_timeout(ICN_BOOT_TIMEOUT1);
                                                        }
+                                                       
+set_current_state(TASK_UNINTERRUPTIBLE);
                                                        
schedule_timeout(ICN_BOOT_TIMEOUT1);
                                                        sprintf(cbuf, 
"00;FV2ON\n01;EAZ%c\n02;EAZ%c\n",
                                                                (a & 1)?'1':'C', (a & 
2)?'2':'C');
--- drivers/usb/ov511.c Fri Sep  1 03:00:57 2000
+++ drivers/usb/ov511.c.new     Fri Sep  1 03:01:23 2000
@@ -2674,6 +2674,7 @@
 
 #if 1          /* Maybe this will fix detection problems? MM */
        /* Wait for it to initialize */ 
+       set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout (1 + 150 * HZ / 1000);
 #endif
 
@@ -2687,6 +2688,7 @@
                /* Reset the 76xx */ 
                if (ov511_i2c_write(dev, 0x12, 0x80) < 0) return -1;
                /* Wait for it to initialize */ 
+               set_current_state(TASK_UNINTERRUPTIBLE);
                schedule_timeout (1 + 150 * HZ / 1000);
                /* Dummy read to sync I2C */
                if (ov511_i2c_read(dev, 0x00) < 0) return -1;
--- drivers/usb/microtek.c      Fri Aug 11 00:21:38 2000
+++ drivers/usb/microtek.c.new  Fri Sep  1 03:03:38 2000
@@ -313,6 +313,7 @@
 
        while( !atomic_read(&desc->lock.count) ) {
 /* Is there a function to check if the semaphore is locked? */
+               set_current_state(TASK_UNINTERRUPTIBLE);
                schedule_timeout( MTS_ABORT_TIMEOUT ); 
                MTS_DEBUG_GOT_HERE();
                mts_urb_abort(desc);
--- drivers/usb/uhci.c  Fri Aug 11 00:21:40 2000
+++ drivers/usb/uhci.c.new      Fri Sep  1 03:05:27 2000
@@ -1553,8 +1553,10 @@
                                if (errorcount--)
                                        dbg("uhci_unlink_urb called from interrupt for 
urb %p", urb);
                                udelay(1000);
-                       } else
+                       } else {
+                               set_current_state(TASK_UNINTERRUPTIBLE);
                                schedule_timeout(1+1*HZ/1000); 
+                       }
 
                        if (urb->complete)
                                urb->complete(urb);
--- drivers/usb/dabusb.c        Fri Aug 11 00:21:37 2000
+++ drivers/usb/dabusb.c.new    Fri Sep  1 03:08:20 2000
@@ -594,6 +594,7 @@
                if (file->f_flags & O_NONBLOCK) {
                        return -EBUSY;
                }
+               set_current_state(TASK_UNINTERRUPTIBLE);
                schedule_timeout (HZ / 2);
 
                if (signal_pending (current)) {
--- drivers/usb/storage/transport.c     Wed Aug 30 18:46:53 2000
+++ drivers/usb/storage/transport.c.new Fri Sep  1 03:14:07 2000
@@ -1168,6 +1170,7 @@
                                 0, us->ifnum, cmd, sizeof(cmd), HZ*5);
 
        /* long wait for reset */
+       set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout(HZ*6);
 
        US_DEBUGP("CB_reset: clearing endpoint halt\n");
@@ -1204,6 +1207,7 @@
                   usb_sndbulkpipe(us->pusb_dev, us->ep_out));
 
        /* long wait for reset */
+       set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout(HZ*6);
 
        return result;
--- drivers/i2c/i2c-algo-pcf.c  Wed Aug  2 20:38:26 2000
+++ drivers/i2c/i2c-algo-pcf.c.new      Fri Sep  1 03:21:47 2000
@@ -124,12 +124,6 @@
 }
 
 
-static inline void pcf_sleep(unsigned long timeout)
-{
-       schedule_timeout( timeout * HZ);
-}
-
-
 static int wait_for_pin(struct i2c_algo_pcf_data *adap, int *status) {
 
        int timeout = DEF_TIMEOUT;
--- drivers/i2c/i2c-elektor.c   Fri Sep  1 03:24:14 2000
+++ drivers/i2c/i2c-elektor.c.new       Fri Sep  1 03:24:48 2000
@@ -119,15 +119,6 @@
 }
 
 
-
-#if 0
-static void pcf_isa_sleep(unsigned long timeout)
-{
-       schedule_timeout( timeout * HZ);
-}
-#endif
-
-
 static void pcf_isa_waitforpin(void) {
 
        int timeout = 2;
--- drivers/mtd/cfi_cmdset_0001.c       Sat Jul 15 21:11:51 2000
+++ drivers/mtd/cfi_cmdset_0001.c.new   Fri Sep  1 03:31:07 2000
@@ -624,7 +624,13 @@
        
        timeo = jiffies + (HZ*2);
        spin_unlock_bh(chip->mutex);
+ 
+       set_current_state(TASK_INTERRUPTIBLE);
        schedule_timeout(HZ);
+ 
+       if (signal_pending(current))
+               return -EINTR;
+ 
        spin_lock_bh(chip->mutex);
 
        /* FIXME. Use a timer to check this, and return immediately. */
--- drivers/mtd/jedec.c Tue Jul 11 19:33:59 2000
+++ drivers/mtd/jedec.c.new     Fri Sep  1 03:34:51 2000
@@ -601,8 +601,11 @@
               todo_left--;
            }
            
-/*         if (NoTime == 0)
-              Time += HZ/10 - schedule_timeout(HZ/10);*/
+/*         if (NoTime == 0) {
+               set_current_state(TASK_UNINTERRUPTIBLE);
+               Time += HZ/10 - schedule_timeout(HZ/10);
+               } */
+ 
            NoTime = 0;
            
            Last[Count % 4] = map->read32(map,(chip->base >> chip->addrshift) + 
chip->start + off);
--- drivers/mtd/mapped.c        Tue Jul 11 19:33:59 2000
+++ drivers/mtd/mapped.c.new    Fri Sep  1 03:36:04 2000
@@ -418,8 +418,10 @@
         for (Count = 3; (Last[(Count - 1) % 4] & (1 << 7)) == 0 && 
              Last[(Count - 1) % 4] != Last[(Count - 2) % 4]; Count++)
         {
-           if (NoTime == 0)
+           if (NoTime == 0) {
+              set_current_state(TASK_UNINTERRUPTIBLE);
               Time += HZ/10 - schedule_timeout(HZ/10);
+           } 
            NoTime = 0;
            
            Last[Count % 4] = readb(base);
--- drivers/mtd/cfi_cmdset_0002.c       Sat Jul 15 21:11:51 2000
+++ drivers/mtd/cfi_cmdset_0002.c.new   Fri Sep  1 03:37:58 2000
@@ -357,7 +357,12 @@
        timeo = jiffies + (HZ*20);
 
        spin_unlock_bh(chip->mutex);
+       set_current_state(TASK_INTERRUPTBLE);
        schedule_timeout(HZ);
+
+       if (signal_pending(current))
+               return -EINTR;
+ 
        spin_lock_bh(chip->mutex);
 
        /* FIXME. Use a timer to check this, and return immediately. */
--- drivers/media/video/buz.c   Sat Aug 26 16:26:36 2000
+++ drivers/media/video/buz.c.new       Fri Sep  1 03:39:45 2000
@@ -2925,6 +2925,7 @@
 
                        /* sleep 1 second */
 
+                       set_current_state(TASK_UNINTERRUPTIBLE);
                        schedule_timeout(HZ);
                        
                        /* Get status of video decoder */
--- drivers/sound/ac97_codec.c  Mon Jul 10 03:21:28 2000
+++ drivers/sound/ac97_codec.c.new      Fri Sep  1 04:01:44 2000
@@ -561,8 +561,10 @@
        /* also according to spec, we wait for codec-ready state */     
        if (codec->codec_wait)
                codec->codec_wait(codec);
-       else
+       else {
+               set_current_state(TASK_UNINTERRUPTIBLE);
                schedule_timeout(5);
+       } 
 
        if ((audio = codec->codec_read(codec, AC97_RESET)) & 0x8000) {
                printk(KERN_ERR "ac97_codec: %s ac97 codec not present\n",
--- drivers/atm/ambassador.c    Tue Jul 11 19:33:27 2000
+++ drivers/atm/ambassador.c.new        Fri Sep  1 04:51:49 2000
@@ -613,19 +613,21 @@
     while (timeout) {
       // go to sleep
       // PRINTD (DBG_CMD, "wait: sleeping %lu for command", timeout);
+      set_current_state(TASK_UNINTERRUPTIBLE);
       timeout = schedule_timeout (timeout);
-      // woken up by timeout or signal
     }
     
     // wait for my slot to be reached (all waiters are here or above, until...)
     while (ptrs->out != my_slot) {
       PRINTD (DBG_CMD, "wait: command slot (now at %p)", ptrs->out);
+      set_current_state(TASK_UNINTERRUPTIBLE);
       schedule();
     }
     
     // wait on my slot (... one gets to its slot, and... )
     while (ptrs->out->request != cpu_to_be32 (SRB_COMPLETE)) {
       PRINTD (DBG_CMD, "wait: command slot completion");
+      set_current_state(TASK_UNINTERRUPTIBLE);
       schedule();
     }
     
@@ -1991,6 +1993,7 @@
   
   while (!lb->result || lb->result == cpu_to_be32 (COMMAND_IN_PROGRESS))
     if (timeout) {
+      set_current_state(TASK_UNINTERRUPTIBLE);
       timeout = schedule_timeout (timeout);
     } else {
       PRINTD (DBG_LOAD|DBG_ERR, "command %d timed out", cmd);
@@ -2004,6 +2007,7 @@
     timeout = HZ/10;
     while (rd_plain (dev, offsetof(amb_mem, doorbell)))
       if (timeout) {
+        set_current_state(TASK_UNINTERRUPTIBLE);
        timeout = schedule_timeout (timeout);
       } else {
        PRINTD (DBG_LOAD|DBG_ERR, "start command did not clear doorbell, res=%08x",
@@ -2116,11 +2120,13 @@
     // 4.2 second wait
     timeout = HZ*42/10;
     while (timeout)
+      set_current_state(TASK_UNINTERRUPTIBLE);
       timeout = schedule_timeout (timeout);
     // half second time-out
     timeout = HZ/2;
     while (!rd_plain (dev, offsetof(amb_mem, mb.loader.ready)))
       if (timeout) {
+       set_current_state(TASK_UNINTERRUPTIBLE);
        timeout = schedule_timeout (timeout);
       } else {
        PRINTD (DBG_LOAD|DBG_ERR, "reset timed out");
@@ -2240,11 +2246,13 @@
   // 2.2 second wait (must not touch doorbell during 2 second DMA test)
   timeout = HZ*22/10;
   while (timeout)
+    set_current_state(TASK_UNINTERRUPTIBLE);
     timeout = schedule_timeout (timeout);
   // give the adapter another half second?
   timeout = HZ/2;
   while (rd_plain (dev, offsetof(amb_mem, doorbell)))
     if (timeout) {
+      set_current_state(TASK_UNINTERRUPTIBLE);
       timeout = schedule_timeout (timeout);
     } else {
       PRINTD (DBG_INIT|DBG_ERR, "adapter init timed out");
@@ -2260,8 +2268,10 @@
   u32 minor;
   command cmd;
   cmd.request = cpu_to_be32 (SRB_GET_VERSION);
-  while (command_do (dev, &cmd))
+  while (command_do (dev, &cmd)) {
+    set_current_state(TASK_UNINTERRUPTIBLE);
     schedule();
+  } 
   major = be32_to_cpu (cmd.args.version.major);
   minor = be32_to_cpu (cmd.args.version.minor);
   PRINTK (KERN_INFO, "microcode version is %u.%u", major, minor);
@@ -2285,8 +2295,10 @@
   }
   
   cmd.request = cpu_to_be32 (SRB_GET_BIA);
-  while (command_do (dev, &cmd))
+  while (command_do (dev, &cmd)) {
+    set_current_state(TASK_UNINTERRUPTIBLE);
     schedule();
+  } 
   lower4 = be32_to_cpu (cmd.args.bia.lower4);
   upper2 = be32_to_cpu (cmd.args.bia.upper2);
   PRINTD (DBG_LOAD, "BIA: lower4: %08x, upper2 %04x", lower4, upper2);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to