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 majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Sep 07 2000 - 21:00:13 EST