Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branches 'irq-fixes-for-linus' and 'sched-fixes-for-linus' of git://git.kernel.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

+9 -46
+1
arch/cris/Kconfig
··· 56 56 select HAVE_IDE 57 57 select HAVE_GENERIC_HARDIRQS 58 58 select GENERIC_HARDIRQS_NO_DEPRECATED 59 + select GENERIC_IRQ_SHOW 59 60 60 61 config HZ 61 62 int
+1 -1
arch/cris/arch-v10/kernel/irq.c
··· 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 }
+4 -4
arch/cris/arch-v32/kernel/irq.c
··· 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);
-39
arch/cris/kernel/irq.c
··· 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
+1 -1
kernel/irq/manage.c
··· 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
+2 -1
kernel/irq/proc.c
··· 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);