diff options
| -rw-r--r-- | arch/cris/Kconfig | 1 | ||||
| -rw-r--r-- | arch/cris/arch-v10/kernel/irq.c | 2 | ||||
| -rw-r--r-- | arch/cris/arch-v32/kernel/irq.c | 8 | ||||
| -rw-r--r-- | arch/cris/kernel/irq.c | 39 | ||||
| -rw-r--r-- | kernel/irq/manage.c | 2 | ||||
| -rw-r--r-- | kernel/irq/proc.c | 3 |
6 files changed, 9 insertions, 46 deletions
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 0a7a4c11d8b1..4db5b46e1eff 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig | |||
| @@ -56,6 +56,7 @@ config CRIS | |||
| 56 | select HAVE_IDE | 56 | select HAVE_IDE |
| 57 | select HAVE_GENERIC_HARDIRQS | 57 | select HAVE_GENERIC_HARDIRQS |
| 58 | select GENERIC_HARDIRQS_NO_DEPRECATED | 58 | select GENERIC_HARDIRQS_NO_DEPRECATED |
| 59 | select GENERIC_IRQ_SHOW | ||
| 59 | 60 | ||
| 60 | config HZ | 61 | config HZ |
| 61 | int | 62 | int |
diff --git a/arch/cris/arch-v10/kernel/irq.c b/arch/cris/arch-v10/kernel/irq.c index 7328a7cf7449..907cfb5a873d 100644 --- a/arch/cris/arch-v10/kernel/irq.c +++ b/arch/cris/arch-v10/kernel/irq.c | |||
| @@ -199,7 +199,7 @@ init_IRQ(void) | |||
| 199 | 199 | ||
| 200 | /* Initialize IRQ handler descriptors. */ | 200 | /* Initialize IRQ handler descriptors. */ |
| 201 | for(i = 2; i < NR_IRQS; i++) { | 201 | for(i = 2; i < NR_IRQS; i++) { |
| 202 | set_irq_desc_and_handler(i, &crisv10_irq_type, | 202 | irq_set_chip_and_handler(i, &crisv10_irq_type, |
| 203 | handle_simple_irq); | 203 | handle_simple_irq); |
| 204 | set_int_vector(i, interrupt[i]); | 204 | set_int_vector(i, interrupt[i]); |
| 205 | } | 205 | } |
diff --git a/arch/cris/arch-v32/kernel/irq.c b/arch/cris/arch-v32/kernel/irq.c index 0ad9db5126c7..8023176e19b2 100644 --- a/arch/cris/arch-v32/kernel/irq.c +++ b/arch/cris/arch-v32/kernel/irq.c | |||
| @@ -451,16 +451,16 @@ init_IRQ(void) | |||
| 451 | 451 | ||
| 452 | /* Point all IRQ's to bad handlers. */ | 452 | /* Point all IRQ's to bad handlers. */ |
| 453 | for (i = FIRST_IRQ, j = 0; j < NR_IRQS; i++, j++) { | 453 | for (i = FIRST_IRQ, j = 0; j < NR_IRQS; i++, j++) { |
| 454 | set_irq_chip_and_handler(j, &crisv32_irq_type, | 454 | irq_set_chip_and_handler(j, &crisv32_irq_type, |
| 455 | handle_simple_irq); | 455 | handle_simple_irq); |
| 456 | set_exception_vector(i, interrupt[j]); | 456 | set_exception_vector(i, interrupt[j]); |
| 457 | } | 457 | } |
| 458 | 458 | ||
| 459 | /* Mark Timer and IPI IRQs as CPU local */ | 459 | /* Mark Timer and IPI IRQs as CPU local */ |
| 460 | irq_allocations[TIMER0_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED; | 460 | irq_allocations[TIMER0_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED; |
| 461 | irq_desc[TIMER0_INTR_VECT].status |= IRQ_PER_CPU; | 461 | irq_set_status_flags(TIMER0_INTR_VECT, IRQ_PER_CPU); |
| 462 | irq_allocations[IPI_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED; | 462 | irq_allocations[IPI_INTR_VECT - FIRST_IRQ].cpu = CPU_FIXED; |
| 463 | irq_desc[IPI_INTR_VECT].status |= IRQ_PER_CPU; | 463 | irq_set_status_flags(IPI_INTR_VECT, IRQ_PER_CPU); |
| 464 | 464 | ||
| 465 | set_exception_vector(0x00, nmi_interrupt); | 465 | set_exception_vector(0x00, nmi_interrupt); |
| 466 | set_exception_vector(0x30, multiple_interrupt); | 466 | set_exception_vector(0x30, multiple_interrupt); |
diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c index c346952f06dc..788eb2248916 100644 --- a/arch/cris/kernel/irq.c +++ b/arch/cris/kernel/irq.c | |||
| @@ -37,45 +37,6 @@ | |||
| 37 | 37 | ||
| 38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
| 39 | 39 | ||
| 40 | int show_interrupts(struct seq_file *p, void *v) | ||
| 41 | { | ||
| 42 | int i = *(loff_t *) v, j; | ||
| 43 | struct irqaction * action; | ||
| 44 | unsigned long flags; | ||
| 45 | |||
| 46 | if (i == 0) { | ||
| 47 | seq_printf(p, " "); | ||
| 48 | for_each_online_cpu(j) | ||
| 49 | seq_printf(p, "CPU%d ",j); | ||
| 50 | seq_putc(p, '\n'); | ||
| 51 | } | ||
| 52 | |||
| 53 | if (i < NR_IRQS) { | ||
| 54 | raw_spin_lock_irqsave(&irq_desc[i].lock, flags); | ||
| 55 | action = irq_desc[i].action; | ||
| 56 | if (!action) | ||
| 57 | goto skip; | ||
| 58 | seq_printf(p, "%3d: ",i); | ||
| 59 | #ifndef CONFIG_SMP | ||
| 60 | seq_printf(p, "%10u ", kstat_irqs(i)); | ||
| 61 | #else | ||
| 62 | for_each_online_cpu(j) | ||
| 63 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); | ||
| 64 | #endif | ||
| 65 | seq_printf(p, " %14s", irq_desc[i].irq_data.chip->name); | ||
| 66 | seq_printf(p, " %s", action->name); | ||
| 67 | |||
| 68 | for (action=action->next; action; action = action->next) | ||
| 69 | seq_printf(p, ", %s", action->name); | ||
| 70 | |||
| 71 | seq_putc(p, '\n'); | ||
| 72 | skip: | ||
| 73 | raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags); | ||
| 74 | } | ||
| 75 | return 0; | ||
| 76 | } | ||
| 77 | |||
| 78 | |||
| 79 | /* called by the assembler IRQ entry functions defined in irq.h | 40 | /* called by the assembler IRQ entry functions defined in irq.h |
| 80 | * to dispatch the interrupts to registered handlers | 41 | * to dispatch the interrupts to registered handlers |
| 81 | * interrupts are disabled upon entry - depending on if the | 42 | * interrupts are disabled upon entry - depending on if the |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index acd599a43bfb..0a2aa73e536c 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -1064,10 +1064,10 @@ mismatch: | |||
| 1064 | ret = -EBUSY; | 1064 | ret = -EBUSY; |
| 1065 | 1065 | ||
| 1066 | out_mask: | 1066 | out_mask: |
| 1067 | raw_spin_unlock_irqrestore(&desc->lock, flags); | ||
| 1067 | free_cpumask_var(mask); | 1068 | free_cpumask_var(mask); |
| 1068 | 1069 | ||
| 1069 | out_thread: | 1070 | out_thread: |
| 1070 | raw_spin_unlock_irqrestore(&desc->lock, flags); | ||
| 1071 | if (new->thread) { | 1071 | if (new->thread) { |
| 1072 | struct task_struct *t = new->thread; | 1072 | struct task_struct *t = new->thread; |
| 1073 | 1073 | ||
diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c index 4cc2e5ed0bec..760248de109d 100644 --- a/kernel/irq/proc.c +++ b/kernel/irq/proc.c | |||
| @@ -405,7 +405,8 @@ int show_interrupts(struct seq_file *p, void *v) | |||
| 405 | for_each_online_cpu(j) | 405 | for_each_online_cpu(j) |
| 406 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); | 406 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); |
| 407 | seq_printf(p, " %8s", desc->irq_data.chip->name); | 407 | seq_printf(p, " %8s", desc->irq_data.chip->name); |
| 408 | seq_printf(p, "-%-8s", desc->name); | 408 | if (desc->name) |
| 409 | seq_printf(p, "-%-8s", desc->name); | ||
| 409 | 410 | ||
| 410 | if (action) { | 411 | if (action) { |
| 411 | seq_printf(p, " %s", action->name); | 412 | seq_printf(p, " %s", action->name); |
