Commit a277055e authored by Thomas Gleixner's avatar Thomas Gleixner

Merge branch 'rt/local-irq' into rt/base

parents 89d8792b 08aaf7b5
...@@ -50,8 +50,8 @@ ...@@ -50,8 +50,8 @@
#define ACPI_ASM_MACROS #define ACPI_ASM_MACROS
#define BREAKPOINT3 #define BREAKPOINT3
#define ACPI_DISABLE_IRQS() local_irq_disable() #define ACPI_DISABLE_IRQS() local_irq_disable_nort()
#define ACPI_ENABLE_IRQS() local_irq_enable() #define ACPI_ENABLE_IRQS() local_irq_enable_nort()
#define ACPI_FLUSH_CPU_CACHE() wbinvd() #define ACPI_FLUSH_CPU_CACHE() wbinvd()
int __acpi_acquire_global_lock(unsigned int *lock); int __acpi_acquire_global_lock(unsigned int *lock);
......
...@@ -837,9 +837,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf, ...@@ -837,9 +837,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,
unsigned long flags; unsigned long flags;
unsigned int consumed; unsigned int consumed;
local_irq_save(flags); local_irq_save_nort(flags);
consumed = ata_sff_data_xfer(dev, buf, buflen, rw); consumed = ata_sff_data_xfer(dev, buf, buflen, rw);
local_irq_restore(flags); local_irq_restore_nort(flags);
return consumed; return consumed;
} }
...@@ -878,7 +878,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) ...@@ -878,7 +878,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
unsigned long flags; unsigned long flags;
/* FIXME: use a bounce buffer */ /* FIXME: use a bounce buffer */
local_irq_save(flags); local_irq_save_nort(flags);
buf = kmap_atomic(page, KM_IRQ0); buf = kmap_atomic(page, KM_IRQ0);
/* do the actual data transfer */ /* do the actual data transfer */
...@@ -886,7 +886,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) ...@@ -886,7 +886,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
do_write); do_write);
kunmap_atomic(buf, KM_IRQ0); kunmap_atomic(buf, KM_IRQ0);
local_irq_restore(flags); local_irq_restore_nort(flags);
} else { } else {
buf = page_address(page); buf = page_address(page);
ap->ops->sff_data_xfer(qc->dev, buf + offset, qc->sect_size, ap->ops->sff_data_xfer(qc->dev, buf + offset, qc->sect_size,
...@@ -1016,7 +1016,7 @@ next_sg: ...@@ -1016,7 +1016,7 @@ next_sg:
unsigned long flags; unsigned long flags;
/* FIXME: use bounce buffer */ /* FIXME: use bounce buffer */
local_irq_save(flags); local_irq_save_nort(flags);
buf = kmap_atomic(page, KM_IRQ0); buf = kmap_atomic(page, KM_IRQ0);
/* do the actual data transfer */ /* do the actual data transfer */
...@@ -1024,7 +1024,7 @@ next_sg: ...@@ -1024,7 +1024,7 @@ next_sg:
count, rw); count, rw);
kunmap_atomic(buf, KM_IRQ0); kunmap_atomic(buf, KM_IRQ0);
local_irq_restore(flags); local_irq_restore_nort(flags);
} else { } else {
buf = page_address(page); buf = page_address(page);
consumed = ap->ops->sff_data_xfer(dev, buf + offset, consumed = ap->ops->sff_data_xfer(dev, buf + offset,
......
...@@ -90,7 +90,7 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -90,7 +90,7 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio)
if (r_clc >= 16) if (r_clc >= 16)
r_clc = 0; r_clc = 0;
} }
local_irq_save(flags); local_irq_save_nort(flags);
/* /*
* PIO mode => ATA FIFO on, ATAPI FIFO off * PIO mode => ATA FIFO on, ATAPI FIFO off
...@@ -112,7 +112,7 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio) ...@@ -112,7 +112,7 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio)
pci_write_config_byte(dev, port, s_clc); pci_write_config_byte(dev, port, s_clc);
pci_write_config_byte(dev, port + unit + 2, (a_clc << 4) | r_clc); pci_write_config_byte(dev, port + unit + 2, (a_clc << 4) | r_clc);
local_irq_restore(flags); local_irq_restore_nort(flags);
} }
/** /**
...@@ -223,7 +223,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev) ...@@ -223,7 +223,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev)
isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
local_irq_save(flags); local_irq_save_nort(flags);
if (m5229_revision < 0xC2) { if (m5229_revision < 0xC2) {
/* /*
...@@ -314,7 +314,7 @@ out: ...@@ -314,7 +314,7 @@ out:
} }
pci_dev_put(north); pci_dev_put(north);
pci_dev_put(isa_dev); pci_dev_put(isa_dev);
local_irq_restore(flags); local_irq_restore_nort(flags);
return 0; return 0;
} }
...@@ -376,7 +376,7 @@ static u8 ali_cable_detect(ide_hwif_t *hwif) ...@@ -376,7 +376,7 @@ static u8 ali_cable_detect(ide_hwif_t *hwif)
unsigned long flags; unsigned long flags;
u8 cbl = ATA_CBL_PATA40, tmpbyte; u8 cbl = ATA_CBL_PATA40, tmpbyte;
local_irq_save(flags); local_irq_save_nort(flags);
if (m5229_revision >= 0xC2) { if (m5229_revision >= 0xC2) {
/* /*
...@@ -397,7 +397,7 @@ static u8 ali_cable_detect(ide_hwif_t *hwif) ...@@ -397,7 +397,7 @@ static u8 ali_cable_detect(ide_hwif_t *hwif)
} }
} }
local_irq_restore(flags); local_irq_restore_nort(flags);
return cbl; return cbl;
} }
......
...@@ -1302,7 +1302,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif, ...@@ -1302,7 +1302,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
dma_old = inb(base + 2); dma_old = inb(base + 2);
local_irq_save(flags); local_irq_save_nort(flags);
dma_new = dma_old; dma_new = dma_old;
pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma); pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma);
...@@ -1313,7 +1313,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif, ...@@ -1313,7 +1313,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
if (dma_new != dma_old) if (dma_new != dma_old)
outb(dma_new, base + 2); outb(dma_new, base + 2);
local_irq_restore(flags); local_irq_restore_nort(flags);
printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n", printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n",
hwif->name, base, base + 7); hwif->name, base, base + 7);
......
...@@ -174,7 +174,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, ...@@ -174,7 +174,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
unsigned long uninitialized_var(flags); unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) { if ((io_32bit & 2) && !mmio) {
local_irq_save(flags); local_irq_save_nort(flags);
ata_vlb_sync(io_ports->nsect_addr); ata_vlb_sync(io_ports->nsect_addr);
} }
...@@ -185,7 +185,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, ...@@ -185,7 +185,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
insl(data_addr, buf, words); insl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio) if ((io_32bit & 2) && !mmio)
local_irq_restore(flags); local_irq_restore_nort(flags);
if (((len + 1) & 3) < 2) if (((len + 1) & 3) < 2)
return; return;
...@@ -218,7 +218,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, ...@@ -218,7 +218,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
unsigned long uninitialized_var(flags); unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) { if ((io_32bit & 2) && !mmio) {
local_irq_save(flags); local_irq_save_nort(flags);
ata_vlb_sync(io_ports->nsect_addr); ata_vlb_sync(io_ports->nsect_addr);
} }
...@@ -229,7 +229,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, ...@@ -229,7 +229,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
outsl(data_addr, buf, words); outsl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio) if ((io_32bit & 2) && !mmio)
local_irq_restore(flags); local_irq_restore_nort(flags);
if (((len + 1) & 3) < 2) if (((len + 1) & 3) < 2)
return; return;
......
...@@ -667,7 +667,7 @@ void ide_timer_expiry (unsigned long data) ...@@ -667,7 +667,7 @@ void ide_timer_expiry (unsigned long data)
/* disable_irq_nosync ?? */ /* disable_irq_nosync ?? */
disable_irq(hwif->irq); disable_irq(hwif->irq);
/* local CPU only, as if we were handling an interrupt */ /* local CPU only, as if we were handling an interrupt */
local_irq_disable(); local_irq_disable_nort();
if (hwif->polling) { if (hwif->polling) {
startstop = handler(drive); startstop = handler(drive);
} else if (drive_is_ready(drive)) { } else if (drive_is_ready(drive)) {
......
...@@ -129,12 +129,12 @@ static int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, ...@@ -129,12 +129,12 @@ static int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad,
if ((stat & ATA_BUSY) == 0) if ((stat & ATA_BUSY) == 0)
break; break;
local_irq_restore(flags); local_irq_restore_nort(flags);
*rstat = stat; *rstat = stat;
return -EBUSY; return -EBUSY;
} }
} }
local_irq_restore(flags); local_irq_restore_nort(flags);
} }
/* /*
* Allow status to settle, then read it again. * Allow status to settle, then read it again.
......
...@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id) ...@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id)
int bswap = 1; int bswap = 1;
/* local CPU only; some systems need this */ /* local CPU only; some systems need this */
local_irq_save(flags); local_irq_save_nort(flags);
/* read 512 bytes of id info */ /* read 512 bytes of id info */
hwif->tp_ops->input_data(drive, NULL, id, SECTOR_SIZE); hwif->tp_ops->input_data(drive, NULL, id, SECTOR_SIZE);
local_irq_restore(flags); local_irq_restore_nort(flags);
drive->dev_flags |= IDE_DFLAG_ID_READ; drive->dev_flags |= IDE_DFLAG_ID_READ;
#ifdef DEBUG #ifdef DEBUG
......
...@@ -248,7 +248,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd, ...@@ -248,7 +248,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
offset %= PAGE_SIZE; offset %= PAGE_SIZE;
if (PageHighMem(page)) if (PageHighMem(page))
local_irq_save(flags); local_irq_save_nort(flags);
buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset; buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset;
...@@ -269,7 +269,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd, ...@@ -269,7 +269,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
kunmap_atomic(buf, KM_BIO_SRC_IRQ); kunmap_atomic(buf, KM_BIO_SRC_IRQ);
if (PageHighMem(page)) if (PageHighMem(page))
local_irq_restore(flags); local_irq_restore_nort(flags);
len -= nr_bytes; len -= nr_bytes;
} }
...@@ -406,7 +406,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive, ...@@ -406,7 +406,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive,
} }
if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0) if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0)
local_irq_disable(); local_irq_disable_nort();
ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE); ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE);
......
...@@ -773,7 +773,7 @@ void ipoib_mcast_restart_task(struct work_struct *work) ...@@ -773,7 +773,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
ipoib_mcast_stop_thread(dev, 0); ipoib_mcast_stop_thread(dev, 0);
local_irq_save(flags); local_irq_save_nort(flags);
netif_addr_lock(dev); netif_addr_lock(dev);
spin_lock(&priv->lock); spin_lock(&priv->lock);
...@@ -852,7 +852,7 @@ void ipoib_mcast_restart_task(struct work_struct *work) ...@@ -852,7 +852,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
spin_unlock(&priv->lock); spin_unlock(&priv->lock);
netif_addr_unlock(dev); netif_addr_unlock(dev);
local_irq_restore(flags); local_irq_restore_nort(flags);
/* We have to cancel outside of the spinlock */ /* We have to cancel outside of the spinlock */
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) { list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/interrupt.h>
#include <linux/sched.h> /* HZ */ #include <linux/sched.h> /* HZ */
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/freezer.h> #include <linux/freezer.h>
...@@ -87,12 +88,12 @@ static int gameport_measure_speed(struct gameport *gameport) ...@@ -87,12 +88,12 @@ static int gameport_measure_speed(struct gameport *gameport)
tx = 1 << 30; tx = 1 << 30;
for(i = 0; i < 50; i++) { for(i = 0; i < 50; i++) {
local_irq_save(flags); local_irq_save_nort(flags);
GET_TIME(t1); GET_TIME(t1);
for (t = 0; t < 50; t++) gameport_read(gameport); for (t = 0; t < 50; t++) gameport_read(gameport);
GET_TIME(t2); GET_TIME(t2);
GET_TIME(t3); GET_TIME(t3);
local_irq_restore(flags); local_irq_restore_nort(flags);
udelay(i * 10); udelay(i * 10);
if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t; if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t;
} }
...@@ -111,11 +112,11 @@ static int gameport_measure_speed(struct gameport *gameport) ...@@ -111,11 +112,11 @@ static int gameport_measure_speed(struct gameport *gameport)
tx = 1 << 30; tx = 1 << 30;
for(i = 0; i < 50; i++) { for(i = 0; i < 50; i++) {
local_irq_save(flags); local_irq_save_nort(flags);
rdtscl(t1); rdtscl(t1);
for (t = 0; t < 50; t++) gameport_read(gameport); for (t = 0; t < 50; t++) gameport_read(gameport);
rdtscl(t2); rdtscl(t2);
local_irq_restore(flags); local_irq_restore_nort(flags);
udelay(i * 10); udelay(i * 10);
if (t2 - t1 < tx) tx = t2 - t1; if (t2 - t1 < tx) tx = t2 - t1;
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/res_counter.h> #include <linux/res_counter.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/interrupt.h>
void res_counter_init(struct res_counter *counter, struct res_counter *parent) void res_counter_init(struct res_counter *counter, struct res_counter *parent)
{ {
...@@ -43,7 +44,7 @@ int res_counter_charge(struct res_counter *counter, unsigned long val, ...@@ -43,7 +44,7 @@ int res_counter_charge(struct res_counter *counter, unsigned long val,
struct res_counter *c, *u; struct res_counter *c, *u;
*limit_fail_at = NULL; *limit_fail_at = NULL;
local_irq_save(flags); local_irq_save_nort(flags);
for (c = counter; c != NULL; c = c->parent) { for (c = counter; c != NULL; c = c->parent) {
spin_lock(&c->lock); spin_lock(&c->lock);
ret = res_counter_charge_locked(c, val); ret = res_counter_charge_locked(c, val);
...@@ -62,7 +63,7 @@ undo: ...@@ -62,7 +63,7 @@ undo:
spin_unlock(&u->lock); spin_unlock(&u->lock);
} }
done: done:
local_irq_restore(flags); local_irq_restore_nort(flags);
return ret; return ret;
} }
...@@ -79,13 +80,13 @@ void res_counter_uncharge(struct res_counter *counter, unsigned long val) ...@@ -79,13 +80,13 @@ void res_counter_uncharge(struct res_counter *counter, unsigned long val)
unsigned long flags; unsigned long flags;
struct res_counter *c; struct res_counter *c;
local_irq_save(flags); local_irq_save_nort(flags);
for (c = counter; c != NULL; c = c->parent) { for (c = counter; c != NULL; c = c->parent) {
spin_lock(&c->lock); spin_lock(&c->lock);
res_counter_uncharge_locked(c, val); res_counter_uncharge_locked(c, val);
spin_unlock(&c->lock); spin_unlock(&c->lock);
} }
local_irq_restore(flags); local_irq_restore_nort(flags);
} }
......
...@@ -416,11 +416,11 @@ void free_uid(struct user_struct *up) ...@@ -416,11 +416,11 @@ void free_uid(struct user_struct *up)
if (!up) if (!up)
return; return;
local_irq_save(flags); local_irq_save_nort(flags);
if (atomic_dec_and_lock(&up->__count, &uidhash_lock)) if (atomic_dec_and_lock(&up->__count, &uidhash_lock))
free_user(up, flags); free_user(up, flags);
else else
local_irq_restore(flags); local_irq_restore_nort(flags);
} }
struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid) struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment