Commit f21df1ea authored by Ingo Molnar's avatar Ingo Molnar Committed by Thomas Gleixner

ide: Do not disable interrupts for PREEMPT-RT

Use the local_irq_*_nort variants.
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 1a62b43c
......@@ -90,7 +90,7 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio)
if (r_clc >= 16)
r_clc = 0;
}
local_irq_save(flags);
local_irq_save_nort(flags);
/*
* 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)
pci_write_config_byte(dev, port, s_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)
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) {
/*
......@@ -314,7 +314,7 @@ out:
}
pci_dev_put(north);
pci_dev_put(isa_dev);
local_irq_restore(flags);
local_irq_restore_nort(flags);
return 0;
}
......@@ -376,7 +376,7 @@ static u8 ali_cable_detect(ide_hwif_t *hwif)
unsigned long flags;
u8 cbl = ATA_CBL_PATA40, tmpbyte;
local_irq_save(flags);
local_irq_save_nort(flags);
if (m5229_revision >= 0xC2) {
/*
......@@ -397,7 +397,7 @@ static u8 ali_cable_detect(ide_hwif_t *hwif)
}
}
local_irq_restore(flags);
local_irq_restore_nort(flags);
return cbl;
}
......
......@@ -1302,7 +1302,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);
......@@ -1313,7 +1313,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);
......
......@@ -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;
......
......@@ -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)) {
......
......@@ -129,12 +129,12 @@ static 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.
......
......@@ -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
......
......@@ -248,7 +248,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
offset %= PAGE_SIZE;
if (PageHighMem(page))
local_irq_save(flags);
local_irq_save_nort(flags);
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,
kunmap_atomic(buf, KM_BIO_SRC_IRQ);
if (PageHighMem(page))
local_irq_restore(flags);
local_irq_restore_nort(flags);
len -= nr_bytes;
}
......@@ -406,7 +406,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);
......
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