diff options
Diffstat (limited to 'arch/tile/kernel/irq.c')
-rw-r--r-- | arch/tile/kernel/irq.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/arch/tile/kernel/irq.c b/arch/tile/kernel/irq.c index 128805ef8f2c..0baa7580121f 100644 --- a/arch/tile/kernel/irq.c +++ b/arch/tile/kernel/irq.c | |||
@@ -176,43 +176,43 @@ void disable_percpu_irq(unsigned int irq) | |||
176 | EXPORT_SYMBOL(disable_percpu_irq); | 176 | EXPORT_SYMBOL(disable_percpu_irq); |
177 | 177 | ||
178 | /* Mask an interrupt. */ | 178 | /* Mask an interrupt. */ |
179 | static void tile_irq_chip_mask(unsigned int irq) | 179 | static void tile_irq_chip_mask(struct irq_data *d) |
180 | { | 180 | { |
181 | mask_irqs(1UL << irq); | 181 | mask_irqs(1UL << d->irq); |
182 | } | 182 | } |
183 | 183 | ||
184 | /* Unmask an interrupt. */ | 184 | /* Unmask an interrupt. */ |
185 | static void tile_irq_chip_unmask(unsigned int irq) | 185 | static void tile_irq_chip_unmask(struct irq_data *d) |
186 | { | 186 | { |
187 | unmask_irqs(1UL << irq); | 187 | unmask_irqs(1UL << d->irq); |
188 | } | 188 | } |
189 | 189 | ||
190 | /* | 190 | /* |
191 | * Clear an interrupt before processing it so that any new assertions | 191 | * Clear an interrupt before processing it so that any new assertions |
192 | * will trigger another irq. | 192 | * will trigger another irq. |
193 | */ | 193 | */ |
194 | static void tile_irq_chip_ack(unsigned int irq) | 194 | static void tile_irq_chip_ack(struct irq_data *d) |
195 | { | 195 | { |
196 | if ((unsigned long)get_irq_chip_data(irq) != IS_HW_CLEARED) | 196 | if ((unsigned long)irq_data_get_irq_chip_data(d) != IS_HW_CLEARED) |
197 | clear_irqs(1UL << irq); | 197 | clear_irqs(1UL << d->irq); |
198 | } | 198 | } |
199 | 199 | ||
200 | /* | 200 | /* |
201 | * For per-cpu interrupts, we need to avoid unmasking any interrupts | 201 | * For per-cpu interrupts, we need to avoid unmasking any interrupts |
202 | * that we disabled via disable_percpu_irq(). | 202 | * that we disabled via disable_percpu_irq(). |
203 | */ | 203 | */ |
204 | static void tile_irq_chip_eoi(unsigned int irq) | 204 | static void tile_irq_chip_eoi(struct irq_data *d) |
205 | { | 205 | { |
206 | if (!(__get_cpu_var(irq_disable_mask) & (1UL << irq))) | 206 | if (!(__get_cpu_var(irq_disable_mask) & (1UL << d->irq))) |
207 | unmask_irqs(1UL << irq); | 207 | unmask_irqs(1UL << d->irq); |
208 | } | 208 | } |
209 | 209 | ||
210 | static struct irq_chip tile_irq_chip = { | 210 | static struct irq_chip tile_irq_chip = { |
211 | .name = "tile_irq_chip", | 211 | .name = "tile_irq_chip", |
212 | .ack = tile_irq_chip_ack, | 212 | .irq_ack = tile_irq_chip_ack, |
213 | .eoi = tile_irq_chip_eoi, | 213 | .irq_eoi = tile_irq_chip_eoi, |
214 | .mask = tile_irq_chip_mask, | 214 | .irq_mask = tile_irq_chip_mask, |
215 | .unmask = tile_irq_chip_unmask, | 215 | .irq_unmask = tile_irq_chip_unmask, |
216 | }; | 216 | }; |
217 | 217 | ||
218 | void __init init_IRQ(void) | 218 | void __init init_IRQ(void) |
@@ -277,8 +277,10 @@ int show_interrupts(struct seq_file *p, void *v) | |||
277 | } | 277 | } |
278 | 278 | ||
279 | if (i < NR_IRQS) { | 279 | if (i < NR_IRQS) { |
280 | raw_spin_lock_irqsave(&irq_desc[i].lock, flags); | 280 | struct irq_desc *desc = irq_to_desc(i); |
281 | action = irq_desc[i].action; | 281 | |
282 | raw_spin_lock_irqsave(&desc->lock, flags); | ||
283 | action = desc->action; | ||
282 | if (!action) | 284 | if (!action) |
283 | goto skip; | 285 | goto skip; |
284 | seq_printf(p, "%3d: ", i); | 286 | seq_printf(p, "%3d: ", i); |
@@ -288,7 +290,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
288 | for_each_online_cpu(j) | 290 | for_each_online_cpu(j) |
289 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); | 291 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); |
290 | #endif | 292 | #endif |
291 | seq_printf(p, " %14s", irq_desc[i].chip->name); | 293 | seq_printf(p, " %14s", get_irq_desc_chip(desc)->name); |
292 | seq_printf(p, " %s", action->name); | 294 | seq_printf(p, " %s", action->name); |
293 | 295 | ||
294 | for (action = action->next; action; action = action->next) | 296 | for (action = action->next; action; action = action->next) |
@@ -296,7 +298,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
296 | 298 | ||
297 | seq_putc(p, '\n'); | 299 | seq_putc(p, '\n'); |
298 | skip: | 300 | skip: |
299 | raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags); | 301 | raw_spin_unlock_irqrestore(&desc->lock, flags); |
300 | } | 302 | } |
301 | return 0; | 303 | return 0; |
302 | } | 304 | } |