diff options
Diffstat (limited to 'arch/um/kernel/irq.c')
| -rw-r--r-- | arch/um/kernel/irq.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 3f0ac9e0c96..64cfea80cfe 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c | |||
| @@ -35,8 +35,10 @@ int show_interrupts(struct seq_file *p, void *v) | |||
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | if (i < NR_IRQS) { | 37 | if (i < NR_IRQS) { |
| 38 | raw_spin_lock_irqsave(&irq_desc[i].lock, flags); | 38 | struct irq_desc *desc = irq_to_desc(i); |
| 39 | action = irq_desc[i].action; | 39 | |
| 40 | raw_spin_lock_irqsave(&desc->lock, flags); | ||
| 41 | action = desc->action; | ||
| 40 | if (!action) | 42 | if (!action) |
| 41 | goto skip; | 43 | goto skip; |
| 42 | seq_printf(p, "%3d: ",i); | 44 | seq_printf(p, "%3d: ",i); |
| @@ -46,7 +48,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
| 46 | for_each_online_cpu(j) | 48 | for_each_online_cpu(j) |
| 47 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); | 49 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); |
| 48 | #endif | 50 | #endif |
| 49 | seq_printf(p, " %14s", irq_desc[i].chip->name); | 51 | seq_printf(p, " %14s", get_irq_desc_chip(desc)->name); |
| 50 | seq_printf(p, " %s", action->name); | 52 | seq_printf(p, " %s", action->name); |
| 51 | 53 | ||
| 52 | for (action=action->next; action; action = action->next) | 54 | for (action=action->next; action; action = action->next) |
| @@ -54,7 +56,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
| 54 | 56 | ||
| 55 | seq_putc(p, '\n'); | 57 | seq_putc(p, '\n'); |
| 56 | skip: | 58 | skip: |
| 57 | raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags); | 59 | raw_spin_unlock_irqrestore(&desc->lock, flags); |
| 58 | } else if (i == NR_IRQS) | 60 | } else if (i == NR_IRQS) |
| 59 | seq_putc(p, '\n'); | 61 | seq_putc(p, '\n'); |
| 60 | 62 | ||
| @@ -360,10 +362,10 @@ EXPORT_SYMBOL(um_request_irq); | |||
| 360 | EXPORT_SYMBOL(reactivate_fd); | 362 | EXPORT_SYMBOL(reactivate_fd); |
| 361 | 363 | ||
| 362 | /* | 364 | /* |
| 363 | * irq_chip must define (startup || enable) && | 365 | * irq_chip must define at least enable/disable and ack when |
| 364 | * (shutdown || disable) && end | 366 | * the edge handler is used. |
| 365 | */ | 367 | */ |
| 366 | static void dummy(unsigned int irq) | 368 | static void dummy(struct irq_data *d) |
| 367 | { | 369 | { |
| 368 | } | 370 | } |
| 369 | 371 | ||
| @@ -371,20 +373,17 @@ static void dummy(unsigned int irq) | |||
| 371 | static struct irq_chip normal_irq_type = { | 373 | static struct irq_chip normal_irq_type = { |
| 372 | .name = "SIGIO", | 374 | .name = "SIGIO", |
| 373 | .release = free_irq_by_irq_and_dev, | 375 | .release = free_irq_by_irq_and_dev, |
| 374 | .disable = dummy, | 376 | .irq_disable = dummy, |
| 375 | .enable = dummy, | 377 | .irq_enable = dummy, |
| 376 | .ack = dummy, | 378 | .irq_ack = dummy, |
| 377 | .end = dummy | ||
| 378 | }; | 379 | }; |
| 379 | 380 | ||
| 380 | static struct irq_chip SIGVTALRM_irq_type = { | 381 | static struct irq_chip SIGVTALRM_irq_type = { |
| 381 | .name = "SIGVTALRM", | 382 | .name = "SIGVTALRM", |
| 382 | .release = free_irq_by_irq_and_dev, | 383 | .release = free_irq_by_irq_and_dev, |
| 383 | .shutdown = dummy, /* never called */ | 384 | .irq_disable = dummy, |
| 384 | .disable = dummy, | 385 | .irq_enable = dummy, |
| 385 | .enable = dummy, | 386 | .irq_ack = dummy, |
| 386 | .ack = dummy, | ||
| 387 | .end = dummy | ||
| 388 | }; | 387 | }; |
| 389 | 388 | ||
| 390 | void __init init_IRQ(void) | 389 | void __init init_IRQ(void) |
