]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/blob - rt-patches/0040-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch
rt_patches: required rebase due to printk change
[hercules2020/nv-tegra/linux-4.4.git] / rt-patches / 0040-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch
1 From d21df5f1b37481178e02d55844fbfe66d49083da Mon Sep 17 00:00:00 2001
2 From: Ingo Molnar <mingo@elte.hu>
3 Date: Fri, 3 Jul 2009 08:30:16 -0500
4 Subject: [PATCH 040/366] ide: Do not disable interrupts for PREEMPT-RT
5
6 Use the local_irq_*_nort variants.
7
8 Signed-off-by: Ingo Molnar <mingo@elte.hu>
9 Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
10 ---
11  drivers/ide/alim15x3.c     | 4 ++--
12  drivers/ide/hpt366.c       | 4 ++--
13  drivers/ide/ide-io-std.c   | 8 ++++----
14  drivers/ide/ide-io.c       | 2 +-
15  drivers/ide/ide-iops.c     | 4 ++--
16  drivers/ide/ide-probe.c    | 4 ++--
17  drivers/ide/ide-taskfile.c | 6 +++---
18  7 files changed, 16 insertions(+), 16 deletions(-)
19
20 diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c
21 index 36f76e2..394f142f 100644
22 --- a/drivers/ide/alim15x3.c
23 +++ b/drivers/ide/alim15x3.c
24 @@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev)
25  
26         isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
27  
28 -       local_irq_save(flags);
29 +       local_irq_save_nort(flags);
30  
31         if (m5229_revision < 0xC2) {
32                 /*
33 @@ -325,7 +325,7 @@ out:
34         }
35         pci_dev_put(north);
36         pci_dev_put(isa_dev);
37 -       local_irq_restore(flags);
38 +       local_irq_restore_nort(flags);
39         return 0;
40  }
41  
42 diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c
43 index 696b6c1..0d0a966 100644
44 --- a/drivers/ide/hpt366.c
45 +++ b/drivers/ide/hpt366.c
46 @@ -1241,7 +1241,7 @@ static int init_dma_hpt366(ide_hwif_t *hwif,
47  
48         dma_old = inb(base + 2);
49  
50 -       local_irq_save(flags);
51 +       local_irq_save_nort(flags);
52  
53         dma_new = dma_old;
54         pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma);
55 @@ -1252,7 +1252,7 @@ static int init_dma_hpt366(ide_hwif_t *hwif,
56         if (dma_new != dma_old)
57                 outb(dma_new, base + 2);
58  
59 -       local_irq_restore(flags);
60 +       local_irq_restore_nort(flags);
61  
62         printk(KERN_INFO "    %s: BM-DMA at 0x%04lx-0x%04lx\n",
63                          hwif->name, base, base + 7);
64 diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c
65 index 1976397..4169433 100644
66 --- a/drivers/ide/ide-io-std.c
67 +++ b/drivers/ide/ide-io-std.c
68 @@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
69                 unsigned long uninitialized_var(flags);
70  
71                 if ((io_32bit & 2) && !mmio) {
72 -                       local_irq_save(flags);
73 +                       local_irq_save_nort(flags);
74                         ata_vlb_sync(io_ports->nsect_addr);
75                 }
76  
77 @@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
78                         insl(data_addr, buf, words);
79  
80                 if ((io_32bit & 2) && !mmio)
81 -                       local_irq_restore(flags);
82 +                       local_irq_restore_nort(flags);
83  
84                 if (((len + 1) & 3) < 2)
85                         return;
86 @@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
87                 unsigned long uninitialized_var(flags);
88  
89                 if ((io_32bit & 2) && !mmio) {
90 -                       local_irq_save(flags);
91 +                       local_irq_save_nort(flags);
92                         ata_vlb_sync(io_ports->nsect_addr);
93                 }
94  
95 @@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
96                         outsl(data_addr, buf, words);
97  
98                 if ((io_32bit & 2) && !mmio)
99 -                       local_irq_restore(flags);
100 +                       local_irq_restore_nort(flags);
101  
102                 if (((len + 1) & 3) < 2)
103                         return;
104 diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
105 index 669ea1e..e12e43e 100644
106 --- a/drivers/ide/ide-io.c
107 +++ b/drivers/ide/ide-io.c
108 @@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long data)
109                 /* disable_irq_nosync ?? */
110                 disable_irq(hwif->irq);
111                 /* local CPU only, as if we were handling an interrupt */
112 -               local_irq_disable();
113 +               local_irq_disable_nort();
114                 if (hwif->polling) {
115                         startstop = handler(drive);
116                 } else if (drive_is_ready(drive)) {
117 diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
118 index 376f2dc..f014dd1 100644
119 --- a/drivers/ide/ide-iops.c
120 +++ b/drivers/ide/ide-iops.c
121 @@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad,
122                                 if ((stat & ATA_BUSY) == 0)
123                                         break;
124  
125 -                               local_irq_restore(flags);
126 +                               local_irq_restore_nort(flags);
127                                 *rstat = stat;
128                                 return -EBUSY;
129                         }
130                 }
131 -               local_irq_restore(flags);
132 +               local_irq_restore_nort(flags);
133         }
134         /*
135          * Allow status to settle, then read it again.
136 diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
137 index 0b63fac..4ceba37 100644
138 --- a/drivers/ide/ide-probe.c
139 +++ b/drivers/ide/ide-probe.c
140 @@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id)
141         int bswap = 1;
142  
143         /* local CPU only; some systems need this */
144 -       local_irq_save(flags);
145 +       local_irq_save_nort(flags);
146         /* read 512 bytes of id info */
147         hwif->tp_ops->input_data(drive, NULL, id, SECTOR_SIZE);
148 -       local_irq_restore(flags);
149 +       local_irq_restore_nort(flags);
150  
151         drive->dev_flags |= IDE_DFLAG_ID_READ;
152  #ifdef DEBUG
153 diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
154 index a716693..be0568c 100644
155 --- a/drivers/ide/ide-taskfile.c
156 +++ b/drivers/ide/ide-taskfile.c
157 @@ -250,7 +250,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
158  
159                 page_is_high = PageHighMem(page);
160                 if (page_is_high)
161 -                       local_irq_save(flags);
162 +                       local_irq_save_nort(flags);
163  
164                 buf = kmap_atomic(page) + offset;
165  
166 @@ -271,7 +271,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
167                 kunmap_atomic(buf);
168  
169                 if (page_is_high)
170 -                       local_irq_restore(flags);
171 +                       local_irq_restore_nort(flags);
172  
173                 len -= nr_bytes;
174         }
175 @@ -414,7 +414,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive,
176         }
177  
178         if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0)
179 -               local_irq_disable();
180 +               local_irq_disable_nort();
181  
182         ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE);
183  
184 -- 
185 1.9.1
186