| From d0425df6ee66c57380014ccce84b17bcd8df1e06 Mon Sep 17 00:00:00 2001 |
| From: Ingo Molnar <mingo@elte.hu> |
| Date: Fri, 3 Jul 2009 08:30:16 -0500 |
| Subject: [PATCH] ide: Do not disable interrupts for PREEMPT-RT |
| |
| commit f21df1ea9bea1678a11be8501b2d5ae19f0d55f1 in tip. |
| |
| Use the local_irq_*_nort variants. |
| |
| Signed-off-by: Ingo Molnar <mingo@elte.hu> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c |
| index 2c8016a..6fd6037 100644 |
| --- a/drivers/ide/alim15x3.c |
| +++ b/drivers/ide/alim15x3.c |
| @@ -234,7 +234,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); |
| |
| - local_irq_save(flags); |
| + local_irq_save_nort(flags); |
| |
| if (m5229_revision < 0xC2) { |
| /* |
| @@ -325,7 +325,7 @@ out: |
| } |
| pci_dev_put(north); |
| pci_dev_put(isa_dev); |
| - local_irq_restore(flags); |
| + local_irq_restore_nort(flags); |
| return 0; |
| } |
| |
| diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c |
| index b885c1d..7c3adf3 100644 |
| --- a/drivers/ide/hpt366.c |
| +++ b/drivers/ide/hpt366.c |
| @@ -1238,7 +1238,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif, |
| |
| dma_old = inb(base + 2); |
| |
| - local_irq_save(flags); |
| + local_irq_save_nort(flags); |
| |
| dma_new = dma_old; |
| pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma); |
| @@ -1249,7 +1249,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif, |
| if (dma_new != dma_old) |
| 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", |
| hwif->name, base, base + 7); |
| diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c |
| index 46721c4..b6f114a 100644 |
| --- a/drivers/ide/ide-io-std.c |
| +++ b/drivers/ide/ide-io-std.c |
| @@ -174,7 +174,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, |
| unsigned long uninitialized_var(flags); |
| |
| if ((io_32bit & 2) && !mmio) { |
| - local_irq_save(flags); |
| + local_irq_save_nort(flags); |
| 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, |
| insl(data_addr, buf, words); |
| |
| if ((io_32bit & 2) && !mmio) |
| - local_irq_restore(flags); |
| + local_irq_restore_nort(flags); |
| |
| if (((len + 1) & 3) < 2) |
| return; |
| @@ -218,7 +218,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, |
| unsigned long uninitialized_var(flags); |
| |
| if ((io_32bit & 2) && !mmio) { |
| - local_irq_save(flags); |
| + local_irq_save_nort(flags); |
| 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, |
| outsl(data_addr, buf, words); |
| |
| if ((io_32bit & 2) && !mmio) |
| - local_irq_restore(flags); |
| + local_irq_restore_nort(flags); |
| |
| if (((len + 1) & 3) < 2) |
| return; |
| diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c |
| index db96138..b8b3ab6 100644 |
| --- a/drivers/ide/ide-io.c |
| +++ b/drivers/ide/ide-io.c |
| @@ -667,7 +667,7 @@ void ide_timer_expiry (unsigned long data) |
| /* disable_irq_nosync ?? */ |
| disable_irq(hwif->irq); |
| /* local CPU only, as if we were handling an interrupt */ |
| - local_irq_disable(); |
| + local_irq_disable_nort(); |
| if (hwif->polling) { |
| startstop = handler(drive); |
| } else if (drive_is_ready(drive)) { |
| diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c |
| index 376f2dc..f014dd1 100644 |
| --- a/drivers/ide/ide-iops.c |
| +++ b/drivers/ide/ide-iops.c |
| @@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, |
| if ((stat & ATA_BUSY) == 0) |
| break; |
| |
| - local_irq_restore(flags); |
| + local_irq_restore_nort(flags); |
| *rstat = stat; |
| return -EBUSY; |
| } |
| } |
| - local_irq_restore(flags); |
| + local_irq_restore_nort(flags); |
| } |
| /* |
| * Allow status to settle, then read it again. |
| diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c |
| index fbedd35..58ac573 100644 |
| --- a/drivers/ide/ide-probe.c |
| +++ b/drivers/ide/ide-probe.c |
| @@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id) |
| int bswap = 1; |
| |
| /* local CPU only; some systems need this */ |
| - local_irq_save(flags); |
| + local_irq_save_nort(flags); |
| /* read 512 bytes of id info */ |
| 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; |
| #ifdef DEBUG |
| diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c |
| index cc8633c..7253867 100644 |
| --- a/drivers/ide/ide-taskfile.c |
| +++ b/drivers/ide/ide-taskfile.c |
| @@ -250,7 +250,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd, |
| |
| page_is_high = PageHighMem(page); |
| if (page_is_high) |
| - local_irq_save(flags); |
| + local_irq_save_nort(flags); |
| |
| buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset; |
| |
| @@ -271,7 +271,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd, |
| kunmap_atomic(buf, KM_BIO_SRC_IRQ); |
| |
| if (page_is_high) |
| - local_irq_restore(flags); |
| + local_irq_restore_nort(flags); |
| |
| len -= nr_bytes; |
| } |
| @@ -414,7 +414,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive, |
| } |
| |
| if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0) |
| - local_irq_disable(); |
| + local_irq_disable_nort(); |
| |
| ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE); |
| |
| -- |
| 1.7.1.1 |
| |