aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/char/sysrq.c1
-rw-r--r--drivers/char/vme_scc.c2
-rw-r--r--drivers/ide/mips/swarm.c2
-rw-r--r--drivers/input/keyboard/hil_kbd.c2
-rw-r--r--drivers/input/mouse/hil_ptr.c2
-rw-r--r--drivers/input/serio/gscps2.c4
-rw-r--r--drivers/input/serio/hil_mlc.c32
-rw-r--r--drivers/macintosh/adb-iop.c2
-rw-r--r--drivers/macintosh/via-macii.c2
-rw-r--r--drivers/macintosh/via-maciisi.c2
-rw-r--r--drivers/macintosh/via-pmu68k.c6
-rw-r--r--drivers/md/md.c1
-rw-r--r--drivers/mmc/mmc_block.c104
-rw-r--r--drivers/net/7990.c2
-rw-r--r--drivers/net/lasi_82596.c2
-rw-r--r--drivers/net/smc91x.c2
-rw-r--r--drivers/parisc/dino.c2
-rw-r--r--drivers/parisc/eisa.c2
-rw-r--r--drivers/parport/parport_mfc3.c2
-rw-r--r--drivers/pcmcia/m32r_pcc.c2
-rw-r--r--drivers/s390/block/dasd_diag.c2
-rw-r--r--drivers/s390/char/ctrlchar.c2
-rw-r--r--drivers/s390/char/keyboard.c2
-rw-r--r--drivers/s390/char/monwriter.c10
-rw-r--r--drivers/s390/char/sclp.c4
-rw-r--r--drivers/s390/cio/chsc.c25
-rw-r--r--drivers/s390/cio/cio.c6
-rw-r--r--drivers/s390/crypto/ap_bus.c2
-rw-r--r--drivers/s390/net/iucv.c4
-rw-r--r--drivers/scsi/mesh.c4
-rw-r--r--drivers/serial/m32r_sio.c2
-rw-r--r--drivers/serial/mux.c2
-rw-r--r--drivers/serial/sn_console.c2
-rw-r--r--drivers/usb/host/ohci-q.c2
34 files changed, 173 insertions, 72 deletions
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
index 4c0e08685705..5f49280779fb 100644
--- a/drivers/char/sysrq.c
+++ b/drivers/char/sysrq.c
@@ -38,6 +38,7 @@
38#include <linux/irq.h> 38#include <linux/irq.h>
39 39
40#include <asm/ptrace.h> 40#include <asm/ptrace.h>
41#include <asm/irq_regs.h>
41 42
42/* Whether we react on sysrq keys or just ignore them */ 43/* Whether we react on sysrq keys or just ignore them */
43int sysrq_enabled = 1; 44int sysrq_enabled = 1;
diff --git a/drivers/char/vme_scc.c b/drivers/char/vme_scc.c
index 0cdbaa70cf9f..d0b94dd1af6d 100644
--- a/drivers/char/vme_scc.c
+++ b/drivers/char/vme_scc.c
@@ -593,7 +593,7 @@ static void scc_enable_tx_interrupts(void *ptr)
593 local_irq_save(flags); 593 local_irq_save(flags);
594 SCCmod(INT_AND_DMA_REG, 0xff, IDR_TX_INT_ENAB); 594 SCCmod(INT_AND_DMA_REG, 0xff, IDR_TX_INT_ENAB);
595 /* restart the transmitter */ 595 /* restart the transmitter */
596 scc_tx_int (0, port, 0); 596 scc_tx_int (0, port);
597 local_irq_restore(flags); 597 local_irq_restore(flags);
598} 598}
599 599
diff --git a/drivers/ide/mips/swarm.c b/drivers/ide/mips/swarm.c
index 66f6064f4640..09c9e7936b0d 100644
--- a/drivers/ide/mips/swarm.c
+++ b/drivers/ide/mips/swarm.c
@@ -4,6 +4,7 @@
4 * Author: Manish Lachwani, mlachwani@mvista.com 4 * Author: Manish Lachwani, mlachwani@mvista.com
5 * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved. 5 * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved.
6 * Author: Maciej W. Rozycki <macro@mips.com> 6 * Author: Maciej W. Rozycki <macro@mips.com>
7 * Copyright (c) 2006 Maciej W. Rozycki
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -127,6 +128,7 @@ static int __devinit swarm_ide_probe(struct device *dev)
127 memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports)); 128 memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports));
128 hwif->irq = hwif->hw.irq; 129 hwif->irq = hwif->hw.irq;
129 130
131 probe_hwif_init(hwif);
130 dev_set_drvdata(dev, hwif); 132 dev_set_drvdata(dev, hwif);
131 133
132 return 0; 134 return 0;
diff --git a/drivers/input/keyboard/hil_kbd.c b/drivers/input/keyboard/hil_kbd.c
index c9b0b8978cd8..e774dd31e99b 100644
--- a/drivers/input/keyboard/hil_kbd.c
+++ b/drivers/input/keyboard/hil_kbd.c
@@ -328,7 +328,7 @@ static int hil_kbd_connect(struct serio *serio, struct serio_driver *drv)
328 kbd->dev->id.vendor = PCI_VENDOR_ID_HP; 328 kbd->dev->id.vendor = PCI_VENDOR_ID_HP;
329 kbd->dev->id.product = 0x0001; /* TODO: get from kbd->rsc */ 329 kbd->dev->id.product = 0x0001; /* TODO: get from kbd->rsc */
330 kbd->dev->id.version = 0x0100; /* TODO: get from kbd->rsc */ 330 kbd->dev->id.version = 0x0100; /* TODO: get from kbd->rsc */
331 kbd->dev->dev = &serio->dev; 331 kbd->dev->cdev.dev = &serio->dev;
332 332
333 for (i = 0; i < 128; i++) { 333 for (i = 0; i < 128; i++) {
334 set_bit(hil_kbd_set1[i], kbd->dev->keybit); 334 set_bit(hil_kbd_set1[i], kbd->dev->keybit);
diff --git a/drivers/input/mouse/hil_ptr.c b/drivers/input/mouse/hil_ptr.c
index 402b057e986e..4f2b503c1ac7 100644
--- a/drivers/input/mouse/hil_ptr.c
+++ b/drivers/input/mouse/hil_ptr.c
@@ -375,7 +375,7 @@ static int hil_ptr_connect(struct serio *serio, struct serio_driver *driver)
375 ptr->dev->id.vendor = PCI_VENDOR_ID_HP; 375 ptr->dev->id.vendor = PCI_VENDOR_ID_HP;
376 ptr->dev->id.product = 0x0001; /* TODO: get from ptr->rsc */ 376 ptr->dev->id.product = 0x0001; /* TODO: get from ptr->rsc */
377 ptr->dev->id.version = 0x0100; /* TODO: get from ptr->rsc */ 377 ptr->dev->id.version = 0x0100; /* TODO: get from ptr->rsc */
378 ptr->dev->dev = &serio->dev; 378 ptr->dev->cdev.dev = &serio->dev;
379 379
380 input_register_device(ptr->dev); 380 input_register_device(ptr->dev);
381 printk(KERN_INFO "input: %s (%s), ID: %d\n", 381 printk(KERN_INFO "input: %s (%s), ID: %d\n",
diff --git a/drivers/input/serio/gscps2.c b/drivers/input/serio/gscps2.c
index 081fdc3c7737..74f14e097789 100644
--- a/drivers/input/serio/gscps2.c
+++ b/drivers/input/serio/gscps2.c
@@ -166,7 +166,7 @@ static inline int gscps2_writeb_output(struct gscps2port *ps2port, u8 data)
166 166
167 /* make sure any received data is returned as fast as possible */ 167 /* make sure any received data is returned as fast as possible */
168 /* this is important e.g. when we set the LEDs on the keyboard */ 168 /* this is important e.g. when we set the LEDs on the keyboard */
169 gscps2_interrupt(0, NULL, NULL); 169 gscps2_interrupt(0, NULL);
170 170
171 return 1; 171 return 1;
172} 172}
@@ -306,7 +306,7 @@ static int gscps2_open(struct serio *port)
306 /* enable it */ 306 /* enable it */
307 gscps2_enable(ps2port, ENABLE); 307 gscps2_enable(ps2port, ENABLE);
308 308
309 gscps2_interrupt(0, NULL, NULL); 309 gscps2_interrupt(0, NULL);
310 310
311 return 0; 311 return 0;
312} 312}
diff --git a/drivers/input/serio/hil_mlc.c b/drivers/input/serio/hil_mlc.c
index bbbe15e21904..bdfde046b741 100644
--- a/drivers/input/serio/hil_mlc.c
+++ b/drivers/input/serio/hil_mlc.c
@@ -162,10 +162,10 @@ static void hil_mlc_send_polls(hil_mlc *mlc) {
162 if (did != (p & HIL_PKT_ADDR_MASK) >> 8) { 162 if (did != (p & HIL_PKT_ADDR_MASK) >> 8) {
163 if (drv == NULL || drv->interrupt == NULL) goto skip; 163 if (drv == NULL || drv->interrupt == NULL) goto skip;
164 164
165 drv->interrupt(serio, 0, 0, NULL); 165 drv->interrupt(serio, 0, 0);
166 drv->interrupt(serio, HIL_ERR_INT >> 16, 0, NULL); 166 drv->interrupt(serio, HIL_ERR_INT >> 16, 0);
167 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0, NULL); 167 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0);
168 drv->interrupt(serio, HIL_CMD_POL + cnt, 0, NULL); 168 drv->interrupt(serio, HIL_CMD_POL + cnt, 0);
169 skip: 169 skip:
170 did = (p & HIL_PKT_ADDR_MASK) >> 8; 170 did = (p & HIL_PKT_ADDR_MASK) >> 8;
171 serio = did ? mlc->serio[mlc->di_map[did-1]] : NULL; 171 serio = did ? mlc->serio[mlc->di_map[did-1]] : NULL;
@@ -174,10 +174,10 @@ static void hil_mlc_send_polls(hil_mlc *mlc) {
174 } 174 }
175 cnt++; i++; 175 cnt++; i++;
176 if (drv == NULL || drv->interrupt == NULL) continue; 176 if (drv == NULL || drv->interrupt == NULL) continue;
177 drv->interrupt(serio, (p >> 24), 0, NULL); 177 drv->interrupt(serio, (p >> 24), 0);
178 drv->interrupt(serio, (p >> 16) & 0xff, 0, NULL); 178 drv->interrupt(serio, (p >> 16) & 0xff, 0);
179 drv->interrupt(serio, (p >> 8) & ~HIL_PKT_ADDR_MASK, 0, NULL); 179 drv->interrupt(serio, (p >> 8) & ~HIL_PKT_ADDR_MASK, 0);
180 drv->interrupt(serio, p & 0xff, 0, NULL); 180 drv->interrupt(serio, p & 0xff, 0);
181 } 181 }
182} 182}
183 183
@@ -780,16 +780,16 @@ static int hil_mlc_serio_write(struct serio *serio, unsigned char c) {
780 while ((last != idx) && (*last == 0)) last--; 780 while ((last != idx) && (*last == 0)) last--;
781 781
782 while (idx != last) { 782 while (idx != last) {
783 drv->interrupt(serio, 0, 0, NULL); 783 drv->interrupt(serio, 0, 0);
784 drv->interrupt(serio, HIL_ERR_INT >> 16, 0, NULL); 784 drv->interrupt(serio, HIL_ERR_INT >> 16, 0);
785 drv->interrupt(serio, 0, 0, NULL); 785 drv->interrupt(serio, 0, 0);
786 drv->interrupt(serio, *idx, 0, NULL); 786 drv->interrupt(serio, *idx, 0);
787 idx++; 787 idx++;
788 } 788 }
789 drv->interrupt(serio, 0, 0, NULL); 789 drv->interrupt(serio, 0, 0);
790 drv->interrupt(serio, HIL_ERR_INT >> 16, 0, NULL); 790 drv->interrupt(serio, HIL_ERR_INT >> 16, 0);
791 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0, NULL); 791 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0);
792 drv->interrupt(serio, *idx, 0, NULL); 792 drv->interrupt(serio, *idx, 0);
793 793
794 mlc->serio_oidx[map->didx] = 0; 794 mlc->serio_oidx[map->didx] = 0;
795 mlc->serio_opacket[map->didx] = 0; 795 mlc->serio_opacket[map->didx] = 0;
diff --git a/drivers/macintosh/adb-iop.c b/drivers/macintosh/adb-iop.c
index 1ffee7aaff20..17ef5d3c01b4 100644
--- a/drivers/macintosh/adb-iop.c
+++ b/drivers/macintosh/adb-iop.c
@@ -266,7 +266,7 @@ int adb_iop_autopoll(int devs)
266void adb_iop_poll(void) 266void adb_iop_poll(void)
267{ 267{
268 if (adb_iop_state == idle) adb_iop_start(); 268 if (adb_iop_state == idle) adb_iop_start();
269 iop_ism_irq(0, (void *) ADB_IOP, NULL); 269 iop_ism_irq(0, (void *) ADB_IOP);
270} 270}
271 271
272int adb_iop_reset_bus(void) 272int adb_iop_reset_bus(void)
diff --git a/drivers/macintosh/via-macii.c b/drivers/macintosh/via-macii.c
index ad4bd579f610..5d88d5b0ad99 100644
--- a/drivers/macintosh/via-macii.c
+++ b/drivers/macintosh/via-macii.c
@@ -295,7 +295,7 @@ static void macii_poll(void)
295 unsigned long flags; 295 unsigned long flags;
296 296
297 local_irq_save(flags); 297 local_irq_save(flags);
298 if (via[IFR] & SR_INT) macii_interrupt(0, NULL, NULL); 298 if (via[IFR] & SR_INT) macii_interrupt(0, NULL);
299 local_irq_restore(flags); 299 local_irq_restore(flags);
300} 300}
301 301
diff --git a/drivers/macintosh/via-maciisi.c b/drivers/macintosh/via-maciisi.c
index 789ee52086fe..1f0aa5dc9aa5 100644
--- a/drivers/macintosh/via-maciisi.c
+++ b/drivers/macintosh/via-maciisi.c
@@ -421,7 +421,7 @@ maciisi_poll(void)
421 421
422 local_irq_save(flags); 422 local_irq_save(flags);
423 if (via[IFR] & SR_INT) { 423 if (via[IFR] & SR_INT) {
424 maciisi_interrupt(0, NULL, NULL); 424 maciisi_interrupt(0, NULL);
425 } 425 }
426 else /* avoid calling this function too quickly in a loop */ 426 else /* avoid calling this function too quickly in a loop */
427 udelay(ADB_DELAY); 427 udelay(ADB_DELAY);
diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c
index 98ec915d0409..d9986f3a3fbf 100644
--- a/drivers/macintosh/via-pmu68k.c
+++ b/drivers/macintosh/via-pmu68k.c
@@ -221,7 +221,7 @@ pmu_init(void)
221 } 221 }
222 if (pmu_state == idle) { 222 if (pmu_state == idle) {
223 adb_int_pending = 1; 223 adb_int_pending = 1;
224 pmu_interrupt(0, NULL, NULL); 224 pmu_interrupt(0, NULL);
225 } 225 }
226 pmu_poll(); 226 pmu_poll();
227 udelay(10); 227 udelay(10);
@@ -562,11 +562,11 @@ pmu_poll(void)
562 local_irq_save(flags); 562 local_irq_save(flags);
563 if (via1[IFR] & SR_INT) { 563 if (via1[IFR] & SR_INT) {
564 via1[IFR] = SR_INT; 564 via1[IFR] = SR_INT;
565 pmu_interrupt(IRQ_MAC_ADB_SR, NULL, NULL); 565 pmu_interrupt(IRQ_MAC_ADB_SR, NULL);
566 } 566 }
567 if (via1[IFR] & CB1_INT) { 567 if (via1[IFR] & CB1_INT) {
568 via1[IFR] = CB1_INT; 568 via1[IFR] = CB1_INT;
569 pmu_interrupt(IRQ_MAC_ADB_CL, NULL, NULL); 569 pmu_interrupt(IRQ_MAC_ADB_CL, NULL);
570 } 570 }
571 local_irq_restore(flags); 571 local_irq_restore(flags);
572} 572}
diff --git a/drivers/md/md.c b/drivers/md/md.c
index cb8281605be8..57fa64f93e5f 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -3849,6 +3849,7 @@ static int hot_add_disk(mddev_t * mddev, dev_t dev)
3849 } 3849 }
3850 clear_bit(In_sync, &rdev->flags); 3850 clear_bit(In_sync, &rdev->flags);
3851 rdev->desc_nr = -1; 3851 rdev->desc_nr = -1;
3852 rdev->saved_raid_disk = -1;
3852 err = bind_rdev_to_array(rdev, mddev); 3853 err = bind_rdev_to_array(rdev, mddev);
3853 if (err) 3854 if (err)
3854 goto abort_export; 3855 goto abort_export;
diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c
index c1293f1bda87..f9027c8db792 100644
--- a/drivers/mmc/mmc_block.c
+++ b/drivers/mmc/mmc_block.c
@@ -28,6 +28,7 @@
28#include <linux/kdev_t.h> 28#include <linux/kdev_t.h>
29#include <linux/blkdev.h> 29#include <linux/blkdev.h>
30#include <linux/mutex.h> 30#include <linux/mutex.h>
31#include <linux/scatterlist.h>
31 32
32#include <linux/mmc/card.h> 33#include <linux/mmc/card.h>
33#include <linux/mmc/host.h> 34#include <linux/mmc/host.h>
@@ -154,6 +155,71 @@ static int mmc_blk_prep_rq(struct mmc_queue *mq, struct request *req)
154 return stat; 155 return stat;
155} 156}
156 157
158static u32 mmc_sd_num_wr_blocks(struct mmc_card *card)
159{
160 int err;
161 u32 blocks;
162
163 struct mmc_request mrq;
164 struct mmc_command cmd;
165 struct mmc_data data;
166 unsigned int timeout_us;
167
168 struct scatterlist sg;
169
170 memset(&cmd, 0, sizeof(struct mmc_command));
171
172 cmd.opcode = MMC_APP_CMD;
173 cmd.arg = card->rca << 16;
174 cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
175
176 err = mmc_wait_for_cmd(card->host, &cmd, 0);
177 if ((err != MMC_ERR_NONE) || !(cmd.resp[0] & R1_APP_CMD))
178 return (u32)-1;
179
180 memset(&cmd, 0, sizeof(struct mmc_command));
181
182 cmd.opcode = SD_APP_SEND_NUM_WR_BLKS;
183 cmd.arg = 0;
184 cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC;
185
186 memset(&data, 0, sizeof(struct mmc_data));
187
188 data.timeout_ns = card->csd.tacc_ns * 100;
189 data.timeout_clks = card->csd.tacc_clks * 100;
190
191 timeout_us = data.timeout_ns / 1000;
192 timeout_us += data.timeout_clks * 1000 /
193 (card->host->ios.clock / 1000);
194
195 if (timeout_us > 100000) {
196 data.timeout_ns = 100000000;
197 data.timeout_clks = 0;
198 }
199
200 data.blksz = 4;
201 data.blocks = 1;
202 data.flags = MMC_DATA_READ;
203 data.sg = &sg;
204 data.sg_len = 1;
205
206 memset(&mrq, 0, sizeof(struct mmc_request));
207
208 mrq.cmd = &cmd;
209 mrq.data = &data;
210
211 sg_init_one(&sg, &blocks, 4);
212
213 mmc_wait_for_req(card->host, &mrq);
214
215 if (cmd.error != MMC_ERR_NONE || data.error != MMC_ERR_NONE)
216 return (u32)-1;
217
218 blocks = ntohl(blocks);
219
220 return blocks;
221}
222
157static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) 223static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
158{ 224{
159 struct mmc_blk_data *md = mq->data; 225 struct mmc_blk_data *md = mq->data;
@@ -184,10 +250,13 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
184 250
185 /* 251 /*
186 * If the host doesn't support multiple block writes, force 252 * If the host doesn't support multiple block writes, force
187 * block writes to single block. 253 * block writes to single block. SD cards are excepted from
254 * this rule as they support querying the number of
255 * successfully written sectors.
188 */ 256 */
189 if (rq_data_dir(req) != READ && 257 if (rq_data_dir(req) != READ &&
190 !(card->host->caps & MMC_CAP_MULTIWRITE)) 258 !(card->host->caps & MMC_CAP_MULTIWRITE) &&
259 !mmc_card_sd(card))
191 brq.data.blocks = 1; 260 brq.data.blocks = 1;
192 261
193 if (brq.data.blocks > 1) { 262 if (brq.data.blocks > 1) {
@@ -276,24 +345,41 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
276 return 1; 345 return 1;
277 346
278 cmd_err: 347 cmd_err:
279 mmc_card_release_host(card);
280
281 ret = 1; 348 ret = 1;
282 349
283 /* 350 /*
284 * For writes and where the host claims to support proper 351 * If this is an SD card and we're writing, we can first
285 * error reporting, we first ok the successful blocks. 352 * mark the known good sectors as ok.
353 *
354 * If the card is not SD, we can still ok written sectors
355 * if the controller can do proper error reporting.
286 * 356 *
287 * For reads we just fail the entire chunk as that should 357 * For reads we just fail the entire chunk as that should
288 * be safe in all cases. 358 * be safe in all cases.
289 */ 359 */
290 if (rq_data_dir(req) != READ && 360 if (rq_data_dir(req) != READ && mmc_card_sd(card)) {
291 (card->host->caps & MMC_CAP_MULTIWRITE)) { 361 u32 blocks;
362 unsigned int bytes;
363
364 blocks = mmc_sd_num_wr_blocks(card);
365 if (blocks != (u32)-1) {
366 if (card->csd.write_partial)
367 bytes = blocks << md->block_bits;
368 else
369 bytes = blocks << 9;
370 spin_lock_irq(&md->lock);
371 ret = end_that_request_chunk(req, 1, bytes);
372 spin_unlock_irq(&md->lock);
373 }
374 } else if (rq_data_dir(req) != READ &&
375 (card->host->caps & MMC_CAP_MULTIWRITE)) {
292 spin_lock_irq(&md->lock); 376 spin_lock_irq(&md->lock);
293 ret = end_that_request_chunk(req, 1, brq.data.bytes_xfered); 377 ret = end_that_request_chunk(req, 1, brq.data.bytes_xfered);
294 spin_unlock_irq(&md->lock); 378 spin_unlock_irq(&md->lock);
295 } 379 }
296 380
381 mmc_card_release_host(card);
382
297 spin_lock_irq(&md->lock); 383 spin_lock_irq(&md->lock);
298 while (ret) { 384 while (ret) {
299 ret = end_that_request_chunk(req, 0, 385 ret = end_that_request_chunk(req, 0,
diff --git a/drivers/net/7990.c b/drivers/net/7990.c
index 8e996b4a34ea..7733697f7776 100644
--- a/drivers/net/7990.c
+++ b/drivers/net/7990.c
@@ -674,7 +674,7 @@ void lance_poll(struct net_device *dev)
674 WRITERAP(lp, LE_CSR0); 674 WRITERAP(lp, LE_CSR0);
675 WRITERDP(lp, LE_C0_STRT); 675 WRITERDP(lp, LE_C0_STRT);
676 spin_unlock (&lp->devlock); 676 spin_unlock (&lp->devlock);
677 lance_interrupt(dev->irq, dev, NULL); 677 lance_interrupt(dev->irq, dev);
678} 678}
679#endif 679#endif
680 680
diff --git a/drivers/net/lasi_82596.c b/drivers/net/lasi_82596.c
index 8cbd940f0ac2..f4d815bca643 100644
--- a/drivers/net/lasi_82596.c
+++ b/drivers/net/lasi_82596.c
@@ -1252,7 +1252,7 @@ static int __devinit i82596_probe(struct net_device *dev,
1252static void i596_poll_controller(struct net_device *dev) 1252static void i596_poll_controller(struct net_device *dev)
1253{ 1253{
1254 disable_irq(dev->irq); 1254 disable_irq(dev->irq);
1255 i596_interrupt(dev->irq, dev, NULL); 1255 i596_interrupt(dev->irq, dev);
1256 enable_irq(dev->irq); 1256 enable_irq(dev->irq);
1257} 1257}
1258#endif 1258#endif
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index 506807fa5268..95b6478f55c6 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -1400,7 +1400,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id)
1400static void smc_poll_controller(struct net_device *dev) 1400static void smc_poll_controller(struct net_device *dev)
1401{ 1401{
1402 disable_irq(dev->irq); 1402 disable_irq(dev->irq);
1403 smc_interrupt(dev->irq, dev, NULL); 1403 smc_interrupt(dev->irq, dev);
1404 enable_irq(dev->irq); 1404 enable_irq(dev->irq);
1405} 1405}
1406#endif 1406#endif
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index a0a8fd8d2124..03c763c2d0e0 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -389,7 +389,7 @@ ilr_again:
389 int irq = dino_dev->global_irq[local_irq]; 389 int irq = dino_dev->global_irq[local_irq];
390 DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n", 390 DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n",
391 __FUNCTION__, irq, intr_dev, mask); 391 __FUNCTION__, irq, intr_dev, mask);
392 __do_IRQ(irq, regs); 392 __do_IRQ(irq);
393 mask &= ~(1 << local_irq); 393 mask &= ~(1 << local_irq);
394 } while (mask); 394 } while (mask);
395 395
diff --git a/drivers/parisc/eisa.c b/drivers/parisc/eisa.c
index 094562e044f3..e97cecbc4d18 100644
--- a/drivers/parisc/eisa.c
+++ b/drivers/parisc/eisa.c
@@ -234,7 +234,7 @@ static irqreturn_t eisa_irq(int wax_irq, void *intr_dev)
234 } 234 }
235 spin_unlock_irqrestore(&eisa_irq_lock, flags); 235 spin_unlock_irqrestore(&eisa_irq_lock, flags);
236 236
237 __do_IRQ(irq, regs); 237 __do_IRQ(irq);
238 238
239 spin_lock_irqsave(&eisa_irq_lock, flags); 239 spin_lock_irqsave(&eisa_irq_lock, flags);
240 /* unmask */ 240 /* unmask */
diff --git a/drivers/parport/parport_mfc3.c b/drivers/parport/parport_mfc3.c
index 6541cde4df00..e5b0a544de40 100644
--- a/drivers/parport/parport_mfc3.c
+++ b/drivers/parport/parport_mfc3.c
@@ -219,7 +219,7 @@ static irqreturn_t mfc3_interrupt(int irq, void *dev_id)
219 if (this_port[i] != NULL) 219 if (this_port[i] != NULL)
220 if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */ 220 if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */
221 dummy = pia(this_port[i])->pprb; /* clear irq bit */ 221 dummy = pia(this_port[i])->pprb; /* clear irq bit */
222 parport_generic_irq(irq, this_port[i], regs); 222 parport_generic_irq(irq, this_port[i]);
223 } 223 }
224 return IRQ_HANDLED; 224 return IRQ_HANDLED;
225} 225}
diff --git a/drivers/pcmcia/m32r_pcc.c b/drivers/pcmcia/m32r_pcc.c
index 0964fd76bfe3..bbf025874d0c 100644
--- a/drivers/pcmcia/m32r_pcc.c
+++ b/drivers/pcmcia/m32r_pcc.c
@@ -395,7 +395,7 @@ static irqreturn_t pcc_interrupt(int irq, void *dev)
395 395
396static void pcc_interrupt_wrapper(u_long data) 396static void pcc_interrupt_wrapper(u_long data)
397{ 397{
398 pcc_interrupt(0, NULL, NULL); 398 pcc_interrupt(0, NULL);
399 init_timer(&poll_timer); 399 init_timer(&poll_timer);
400 poll_timer.expires = jiffies + poll_interval; 400 poll_timer.expires = jiffies + poll_interval;
401 add_timer(&poll_timer); 401 add_timer(&poll_timer);
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index 222a8a71a5e8..53db58a68617 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -218,7 +218,7 @@ dasd_diag_term_IO(struct dasd_ccw_req * cqr)
218 218
219/* Handle external interruption. */ 219/* Handle external interruption. */
220static void 220static void
221dasd_ext_handler(struct pt_regs *regs, __u16 code) 221dasd_ext_handler(__u16 code)
222{ 222{
223 struct dasd_ccw_req *cqr, *next; 223 struct dasd_ccw_req *cqr, *next;
224 struct dasd_device *device; 224 struct dasd_device *device;
diff --git a/drivers/s390/char/ctrlchar.c b/drivers/s390/char/ctrlchar.c
index d83eb6358bac..49e9628d9297 100644
--- a/drivers/s390/char/ctrlchar.c
+++ b/drivers/s390/char/ctrlchar.c
@@ -20,7 +20,7 @@ static int ctrlchar_sysrq_key;
20static void 20static void
21ctrlchar_handle_sysrq(void *tty) 21ctrlchar_handle_sysrq(void *tty)
22{ 22{
23 handle_sysrq(ctrlchar_sysrq_key, NULL, (struct tty_struct *) tty); 23 handle_sysrq(ctrlchar_sysrq_key, (struct tty_struct *) tty);
24} 24}
25 25
26static DECLARE_WORK(ctrlchar_work, ctrlchar_handle_sysrq, NULL); 26static DECLARE_WORK(ctrlchar_work, ctrlchar_handle_sysrq, NULL);
diff --git a/drivers/s390/char/keyboard.c b/drivers/s390/char/keyboard.c
index 3be06569180d..e3491a5f5219 100644
--- a/drivers/s390/char/keyboard.c
+++ b/drivers/s390/char/keyboard.c
@@ -304,7 +304,7 @@ kbd_keycode(struct kbd_data *kbd, unsigned int keycode)
304 if (kbd->sysrq) { 304 if (kbd->sysrq) {
305 if (kbd->sysrq == K(KT_LATIN, '-')) { 305 if (kbd->sysrq == K(KT_LATIN, '-')) {
306 kbd->sysrq = 0; 306 kbd->sysrq = 0;
307 handle_sysrq(value, NULL, kbd->tty); 307 handle_sysrq(value, kbd->tty);
308 return; 308 return;
309 } 309 }
310 if (value == '-') { 310 if (value == '-') {
diff --git a/drivers/s390/char/monwriter.c b/drivers/s390/char/monwriter.c
index 1e3939aeb8ab..4362ff260244 100644
--- a/drivers/s390/char/monwriter.c
+++ b/drivers/s390/char/monwriter.c
@@ -26,6 +26,7 @@
26#define MONWRITE_MAX_DATALEN 4024 26#define MONWRITE_MAX_DATALEN 4024
27 27
28static int mon_max_bufs = 255; 28static int mon_max_bufs = 255;
29static int mon_buf_count;
29 30
30struct mon_buf { 31struct mon_buf {
31 struct list_head list; 32 struct list_head list;
@@ -40,7 +41,6 @@ struct mon_private {
40 size_t hdr_to_read; 41 size_t hdr_to_read;
41 size_t data_to_read; 42 size_t data_to_read;
42 struct mon_buf *current_buf; 43 struct mon_buf *current_buf;
43 int mon_buf_count;
44}; 44};
45 45
46/* 46/*
@@ -99,13 +99,13 @@ static int monwrite_new_hdr(struct mon_private *monpriv)
99 rc = monwrite_diag(monhdr, monbuf->data, 99 rc = monwrite_diag(monhdr, monbuf->data,
100 APPLDATA_STOP_REC); 100 APPLDATA_STOP_REC);
101 list_del(&monbuf->list); 101 list_del(&monbuf->list);
102 monpriv->mon_buf_count--; 102 mon_buf_count--;
103 kfree(monbuf->data); 103 kfree(monbuf->data);
104 kfree(monbuf); 104 kfree(monbuf);
105 monbuf = NULL; 105 monbuf = NULL;
106 } 106 }
107 } else { 107 } else {
108 if (monpriv->mon_buf_count >= mon_max_bufs) 108 if (mon_buf_count >= mon_max_bufs)
109 return -ENOSPC; 109 return -ENOSPC;
110 monbuf = kzalloc(sizeof(struct mon_buf), GFP_KERNEL); 110 monbuf = kzalloc(sizeof(struct mon_buf), GFP_KERNEL);
111 if (!monbuf) 111 if (!monbuf)
@@ -118,7 +118,7 @@ static int monwrite_new_hdr(struct mon_private *monpriv)
118 } 118 }
119 monbuf->hdr = *monhdr; 119 monbuf->hdr = *monhdr;
120 list_add_tail(&monbuf->list, &monpriv->list); 120 list_add_tail(&monbuf->list, &monpriv->list);
121 monpriv->mon_buf_count++; 121 mon_buf_count++;
122 } 122 }
123 monpriv->current_buf = monbuf; 123 monpriv->current_buf = monbuf;
124 return 0; 124 return 0;
@@ -186,7 +186,7 @@ static int monwrite_close(struct inode *inode, struct file *filp)
186 if (entry->hdr.mon_function != MONWRITE_GEN_EVENT) 186 if (entry->hdr.mon_function != MONWRITE_GEN_EVENT)
187 monwrite_diag(&entry->hdr, entry->data, 187 monwrite_diag(&entry->hdr, entry->data,
188 APPLDATA_STOP_REC); 188 APPLDATA_STOP_REC);
189 monpriv->mon_buf_count--; 189 mon_buf_count--;
190 list_del(&entry->list); 190 list_del(&entry->list);
191 kfree(entry->data); 191 kfree(entry->data);
192 kfree(entry); 192 kfree(entry);
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c
index 31e335751d6d..8a056df09d6b 100644
--- a/drivers/s390/char/sclp.c
+++ b/drivers/s390/char/sclp.c
@@ -324,7 +324,7 @@ __sclp_find_req(u32 sccb)
324 * Prepare read event data request if necessary. Start processing of next 324 * Prepare read event data request if necessary. Start processing of next
325 * request on queue. */ 325 * request on queue. */
326static void 326static void
327sclp_interrupt_handler(struct pt_regs *regs, __u16 code) 327sclp_interrupt_handler(__u16 code)
328{ 328{
329 struct sclp_req *req; 329 struct sclp_req *req;
330 u32 finished_sccb; 330 u32 finished_sccb;
@@ -743,7 +743,7 @@ EXPORT_SYMBOL(sclp_reactivate);
743/* Handler for external interruption used during initialization. Modify 743/* Handler for external interruption used during initialization. Modify
744 * request state to done. */ 744 * request state to done. */
745static void 745static void
746sclp_check_handler(struct pt_regs *regs, __u16 code) 746sclp_check_handler(__u16 code)
747{ 747{
748 u32 finished_sccb; 748 u32 finished_sccb;
749 749
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c
index 3bb4e472d73d..07c7f19339d2 100644
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -200,11 +200,13 @@ css_get_ssd_info(struct subchannel *sch)
200 spin_unlock_irq(&sch->lock); 200 spin_unlock_irq(&sch->lock);
201 free_page((unsigned long)page); 201 free_page((unsigned long)page);
202 if (!ret) { 202 if (!ret) {
203 int j, chpid; 203 int j, chpid, mask;
204 /* Allocate channel path structures, if needed. */ 204 /* Allocate channel path structures, if needed. */
205 for (j = 0; j < 8; j++) { 205 for (j = 0; j < 8; j++) {
206 mask = 0x80 >> j;
206 chpid = sch->ssd_info.chpid[j]; 207 chpid = sch->ssd_info.chpid[j];
207 if (chpid && (get_chp_status(chpid) < 0)) 208 if ((sch->schib.pmcw.pim & mask) &&
209 (get_chp_status(chpid) < 0))
208 new_channel_path(chpid); 210 new_channel_path(chpid);
209 } 211 }
210 } 212 }
@@ -222,13 +224,15 @@ s390_subchannel_remove_chpid(struct device *dev, void *data)
222 224
223 sch = to_subchannel(dev); 225 sch = to_subchannel(dev);
224 chpid = data; 226 chpid = data;
225 for (j = 0; j < 8; j++) 227 for (j = 0; j < 8; j++) {
226 if (sch->schib.pmcw.chpid[j] == chpid->id) 228 mask = 0x80 >> j;
229 if ((sch->schib.pmcw.pim & mask) &&
230 (sch->schib.pmcw.chpid[j] == chpid->id))
227 break; 231 break;
232 }
228 if (j >= 8) 233 if (j >= 8)
229 return 0; 234 return 0;
230 235
231 mask = 0x80 >> j;
232 spin_lock_irq(&sch->lock); 236 spin_lock_irq(&sch->lock);
233 237
234 stsch(sch->schid, &schib); 238 stsch(sch->schid, &schib);
@@ -620,7 +624,7 @@ __chp_add_new_sch(struct subchannel_id schid)
620static int 624static int
621__chp_add(struct subchannel_id schid, void *data) 625__chp_add(struct subchannel_id schid, void *data)
622{ 626{
623 int i; 627 int i, mask;
624 struct channel_path *chp; 628 struct channel_path *chp;
625 struct subchannel *sch; 629 struct subchannel *sch;
626 630
@@ -630,8 +634,10 @@ __chp_add(struct subchannel_id schid, void *data)
630 /* Check if the subchannel is now available. */ 634 /* Check if the subchannel is now available. */
631 return __chp_add_new_sch(schid); 635 return __chp_add_new_sch(schid);
632 spin_lock_irq(&sch->lock); 636 spin_lock_irq(&sch->lock);
633 for (i=0; i<8; i++) 637 for (i=0; i<8; i++) {
634 if (sch->schib.pmcw.chpid[i] == chp->id) { 638 mask = 0x80 >> i;
639 if ((sch->schib.pmcw.pim & mask) &&
640 (sch->schib.pmcw.chpid[i] == chp->id)) {
635 if (stsch(sch->schid, &sch->schib) != 0) { 641 if (stsch(sch->schid, &sch->schib) != 0) {
636 /* Endgame. */ 642 /* Endgame. */
637 spin_unlock_irq(&sch->lock); 643 spin_unlock_irq(&sch->lock);
@@ -639,6 +645,7 @@ __chp_add(struct subchannel_id schid, void *data)
639 } 645 }
640 break; 646 break;
641 } 647 }
648 }
642 if (i==8) { 649 if (i==8) {
643 spin_unlock_irq(&sch->lock); 650 spin_unlock_irq(&sch->lock);
644 return 0; 651 return 0;
@@ -646,7 +653,7 @@ __chp_add(struct subchannel_id schid, void *data)
646 sch->lpm = ((sch->schib.pmcw.pim & 653 sch->lpm = ((sch->schib.pmcw.pim &
647 sch->schib.pmcw.pam & 654 sch->schib.pmcw.pam &
648 sch->schib.pmcw.pom) 655 sch->schib.pmcw.pom)
649 | 0x80 >> i) & sch->opm; 656 | mask) & sch->opm;
650 657
651 if (sch->driver && sch->driver->verify) 658 if (sch->driver && sch->driver->verify)
652 sch->driver->verify(&sch->dev); 659 sch->driver->verify(&sch->dev);
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index 2e2882daefbb..f18b1623cad7 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -19,6 +19,7 @@
19#include <asm/cio.h> 19#include <asm/cio.h>
20#include <asm/delay.h> 20#include <asm/delay.h>
21#include <asm/irq.h> 21#include <asm/irq.h>
22#include <asm/irq_regs.h>
22#include <asm/setup.h> 23#include <asm/setup.h>
23#include "airq.h" 24#include "airq.h"
24#include "cio.h" 25#include "cio.h"
@@ -606,15 +607,17 @@ do_IRQ (struct pt_regs *regs)
606 struct tpi_info *tpi_info; 607 struct tpi_info *tpi_info;
607 struct subchannel *sch; 608 struct subchannel *sch;
608 struct irb *irb; 609 struct irb *irb;
610 struct pt_regs *old_regs;
609 611
610 irq_enter (); 612 irq_enter ();
613 old_regs = set_irq_regs(regs);
611 asm volatile ("mc 0,0"); 614 asm volatile ("mc 0,0");
612 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) 615 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer)
613 /** 616 /**
614 * Make sure that the i/o interrupt did not "overtake" 617 * Make sure that the i/o interrupt did not "overtake"
615 * the last HZ timer interrupt. 618 * the last HZ timer interrupt.
616 */ 619 */
617 account_ticks(regs); 620 account_ticks();
618 /* 621 /*
619 * Get interrupt information from lowcore 622 * Get interrupt information from lowcore
620 */ 623 */
@@ -652,6 +655,7 @@ do_IRQ (struct pt_regs *regs)
652 * out of the sie which costs more cycles than it saves. 655 * out of the sie which costs more cycles than it saves.
653 */ 656 */
654 } while (!MACHINE_IS_VM && tpi (NULL) != 0); 657 } while (!MACHINE_IS_VM && tpi (NULL) != 0);
658 set_irq_regs(old_regs);
655 irq_exit (); 659 irq_exit ();
656} 660}
657 661
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index cd30f37fceae..c5ccd20b110c 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -1062,7 +1062,7 @@ static int ap_poll_thread(void *data)
1062 unsigned long flags; 1062 unsigned long flags;
1063 int requests; 1063 int requests;
1064 1064
1065 set_user_nice(current, -20); 1065 set_user_nice(current, 19);
1066 while (1) { 1066 while (1) {
1067 if (need_resched()) { 1067 if (need_resched()) {
1068 schedule(); 1068 schedule();
diff --git a/drivers/s390/net/iucv.c b/drivers/s390/net/iucv.c
index 809dd8d7f47a..1476ce2b437c 100644
--- a/drivers/s390/net/iucv.c
+++ b/drivers/s390/net/iucv.c
@@ -116,7 +116,7 @@ static DEFINE_SPINLOCK(iucv_irq_queue_lock);
116 *Internal function prototypes 116 *Internal function prototypes
117 */ 117 */
118static void iucv_tasklet_handler(unsigned long); 118static void iucv_tasklet_handler(unsigned long);
119static void iucv_irq_handler(struct pt_regs *, __u16); 119static void iucv_irq_handler(__u16);
120 120
121static DECLARE_TASKLET(iucv_tasklet,iucv_tasklet_handler,0); 121static DECLARE_TASKLET(iucv_tasklet,iucv_tasklet_handler,0);
122 122
@@ -2251,7 +2251,7 @@ iucv_sever(__u16 pathid, __u8 user_data[16])
2251 * Places the interrupt buffer on a queue and schedules iucv_tasklet_handler(). 2251 * Places the interrupt buffer on a queue and schedules iucv_tasklet_handler().
2252 */ 2252 */
2253static void 2253static void
2254iucv_irq_handler(struct pt_regs *regs, __u16 code) 2254iucv_irq_handler(__u16 code)
2255{ 2255{
2256 iucv_irqdata *irqdata; 2256 iucv_irqdata *irqdata;
2257 2257
diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c
index c773e35dace7..1fd3c7590d31 100644
--- a/drivers/scsi/mesh.c
+++ b/drivers/scsi/mesh.c
@@ -466,7 +466,7 @@ static void mesh_start_cmd(struct mesh_state *ms, struct scsi_cmnd *cmd)
466 dlog(ms, "intr b4 arb, intr/exc/err/fc=%.8x", 466 dlog(ms, "intr b4 arb, intr/exc/err/fc=%.8x",
467 MKWORD(mr->interrupt, mr->exception, 467 MKWORD(mr->interrupt, mr->exception,
468 mr->error, mr->fifo_count)); 468 mr->error, mr->fifo_count));
469 mesh_interrupt(0, (void *)ms, NULL); 469 mesh_interrupt(0, (void *)ms);
470 if (ms->phase != arbitrating) 470 if (ms->phase != arbitrating)
471 return; 471 return;
472 } 472 }
@@ -504,7 +504,7 @@ static void mesh_start_cmd(struct mesh_state *ms, struct scsi_cmnd *cmd)
504 dlog(ms, "intr after disresel, intr/exc/err/fc=%.8x", 504 dlog(ms, "intr after disresel, intr/exc/err/fc=%.8x",
505 MKWORD(mr->interrupt, mr->exception, 505 MKWORD(mr->interrupt, mr->exception,
506 mr->error, mr->fifo_count)); 506 mr->error, mr->fifo_count));
507 mesh_interrupt(0, (void *)ms, NULL); 507 mesh_interrupt(0, (void *)ms);
508 if (ms->phase != arbitrating) 508 if (ms->phase != arbitrating)
509 return; 509 return;
510 dlog(ms, "after intr after disresel, intr/exc/err/fc=%.8x", 510 dlog(ms, "after intr after disresel, intr/exc/err/fc=%.8x",
diff --git a/drivers/serial/m32r_sio.c b/drivers/serial/m32r_sio.c
index c85ac1a77608..7656a35f5e2f 100644
--- a/drivers/serial/m32r_sio.c
+++ b/drivers/serial/m32r_sio.c
@@ -590,7 +590,7 @@ static void m32r_sio_timeout(unsigned long data)
590 sts = sio_in(up, SIOSTS); 590 sts = sio_in(up, SIOSTS);
591 if (sts & 0x5) { 591 if (sts & 0x5) {
592 spin_lock(&up->port.lock); 592 spin_lock(&up->port.lock);
593 m32r_sio_handle_port(up, sts, NULL); 593 m32r_sio_handle_port(up, sts);
594 spin_unlock(&up->port.lock); 594 spin_unlock(&up->port.lock);
595 } 595 }
596 596
diff --git a/drivers/serial/mux.c b/drivers/serial/mux.c
index aa819d3f8ee5..8ad1b8c5ec5d 100644
--- a/drivers/serial/mux.c
+++ b/drivers/serial/mux.c
@@ -230,7 +230,7 @@ static void mux_read(struct uart_port *port)
230 continue; 230 continue;
231 } 231 }
232 232
233 if (uart_handle_sysrq_char(port, data & 0xffu, NULL)) 233 if (uart_handle_sysrq_char(port, data & 0xffu))
234 continue; 234 continue;
235 235
236 tty_insert_flip_char(tty, data & 0xFF, TTY_NORMAL); 236 tty_insert_flip_char(tty, data & 0xFF, TTY_NORMAL);
diff --git a/drivers/serial/sn_console.c b/drivers/serial/sn_console.c
index 709f93a6c18c..956b2cf08e1e 100644
--- a/drivers/serial/sn_console.c
+++ b/drivers/serial/sn_console.c
@@ -674,7 +674,7 @@ static void sn_sal_timer_poll(unsigned long data)
674 if (!port->sc_port.irq) { 674 if (!port->sc_port.irq) {
675 spin_lock_irqsave(&port->sc_port.lock, flags); 675 spin_lock_irqsave(&port->sc_port.lock, flags);
676 if (sn_process_input) 676 if (sn_process_input)
677 sn_receive_chars(port, NULL, flags); 677 sn_receive_chars(port, flags);
678 sn_transmit_chars(port, TRANSMIT_RAW); 678 sn_transmit_chars(port, TRANSMIT_RAW);
679 spin_unlock_irqrestore(&port->sc_port.lock, flags); 679 spin_unlock_irqrestore(&port->sc_port.lock, flags);
680 mod_timer(&port->sc_timer, 680 mod_timer(&port->sc_timer,
diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
index e08d1a2664e6..fe1fe2f97cb5 100644
--- a/drivers/usb/host/ohci-q.c
+++ b/drivers/usb/host/ohci-q.c
@@ -925,7 +925,7 @@ rescan_all:
925 /* only take off EDs that the HC isn't using, accounting for 925 /* only take off EDs that the HC isn't using, accounting for
926 * frame counter wraps and EDs with partially retired TDs 926 * frame counter wraps and EDs with partially retired TDs
927 */ 927 */
928 if (likely (get_irq_regs() && HC_IS_RUNNING(ohci_to_hcd(ohci)->state))) { 928 if (likely (HC_IS_RUNNING(ohci_to_hcd(ohci)->state))) {
929 if (tick_before (tick, ed->tick)) { 929 if (tick_before (tick, ed->tick)) {
930skip_ed: 930skip_ed:
931 last = &ed->ed_next; 931 last = &ed->ed_next;