Commit 508996b6a0ef0c7aa7701995d137e71c56180752
Exists in
master
and in
39 other branches
Merge branches 'irq-fixes-for-linus' and 'sched-fixes-for-linus' of git://git.ke…
…rnel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: genirq: Fix incorrect unlock in __setup_irq() cris: Use generic show_interrupts() genirq: show_interrupts: Check desc->name before printing it blindly cris: Use accessor functions to set IRQ_PER_CPU flag cris: Fix irq conversion fallout * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: sched, kernel-doc: Fix runqueue_is_locked() description
Showing 6 changed files Side-by-side Diff
arch/cris/Kconfig
arch/cris/arch-v10/kernel/irq.c
... | ... | @@ -199,7 +199,7 @@ |
199 | 199 | |
200 | 200 | /* Initialize IRQ handler descriptors. */ |
201 | 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 | 203 | handle_simple_irq); |
204 | 204 | set_int_vector(i, interrupt[i]); |
205 | 205 | } |
arch/cris/arch-v32/kernel/irq.c
... | ... | @@ -451,16 +451,16 @@ |
451 | 451 | |
452 | 452 | /* Point all IRQ's to bad handlers. */ |
453 | 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 | 455 | handle_simple_irq); |
456 | 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 | 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 | 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 | 465 | set_exception_vector(0x00, nmi_interrupt); |
466 | 466 | set_exception_vector(0x30, multiple_interrupt); |
arch/cris/kernel/irq.c
... | ... | @@ -37,45 +37,6 @@ |
37 | 37 | |
38 | 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 | 40 | /* called by the assembler IRQ entry functions defined in irq.h |
80 | 41 | * to dispatch the interrupts to registered handlers |
81 | 42 | * interrupts are disabled upon entry - depending on if the |
kernel/irq/manage.c
... | ... | @@ -1064,10 +1064,10 @@ |
1064 | 1064 | ret = -EBUSY; |
1065 | 1065 | |
1066 | 1066 | out_mask: |
1067 | + raw_spin_unlock_irqrestore(&desc->lock, flags); | |
1067 | 1068 | free_cpumask_var(mask); |
1068 | 1069 | |
1069 | 1070 | out_thread: |
1070 | - raw_spin_unlock_irqrestore(&desc->lock, flags); | |
1071 | 1071 | if (new->thread) { |
1072 | 1072 | struct task_struct *t = new->thread; |
1073 | 1073 |
kernel/irq/proc.c
... | ... | @@ -405,7 +405,8 @@ |
405 | 405 | for_each_online_cpu(j) |
406 | 406 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, j)); |
407 | 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 | 411 | if (action) { |
411 | 412 | seq_printf(p, " %s", action->name); |