irq: rename irq_desc() to to_irq_desc() - fix
Subsystems (16)
PATCH 1/1 irq: rename irq_desc() to to_irq_desc() - fix
some left overs.__do_IRQ not take desc as parameter
--- arch/alpha/kernel/irq.c | 2 +- arch/arm/kernel/irq.c | 10 ++++------ arch/avr32/kernel/irq.c | 8 +++----- arch/cris/kernel/irq.c | 2 +- arch/h8300/kernel/irq.c | 2 +- arch/ia64/kernel/iosapic.c | 2 +- arch/ia64/kernel/msi_ia64.c | 2 +- arch/ia64/sn/kernel/irq.c | 2 +- arch/ia64/sn/kernel/msi_sn.c | 2 +- arch/m32r/kernel/irq.c | 2 +- arch/m68knommu/kernel/irq.c | 2 +- arch/parisc/kernel/irq.c | 2 +- arch/powerpc/platforms/powermac/pic.c | 2 +- arch/um/kernel/irq.c | 2 +- arch/x86/kernel/io_apic.c | 4 +--- drivers/parisc/dino.c | 3 +-- drivers/parisc/eisa.c | 4 +--- drivers/parisc/gsc.c | 3 +-- drivers/parisc/superio.c | 4 +--- drivers/xen/events.c | 2 +- include/linux/irq.h | 10 +++++----- kernel/irq/handle.c | 3 ++- kernel/irq/migration.c | 4 +++- 23 files changed, 35 insertions(+), 44 deletions(-)
arch/alpha/kernel/irq.c +1 -1
@@ -156,6 +156,6 @@ handle_irq(int irq)* at IPL 0. */ local_irq_disable (); -__do_IRQ (irq, &irq_desc[irq]); +__do_IRQ (irq);irq_exit (); }
arch/arm/kernel/irq.c +4 -6
@@ -69,24 +69,22 @@ int show_interrupts(struct seq_file *p, }if (i <NR_IRQS ) { -struct irq_desc *desc =irq_desc (i); - -spin_lock_irqsave (&desc->lock, flags); - action = desc->action; +spin_lock_irqsave (&irq_desc[i].lock, flags); + action = irq_desc[i].action;if (!action) goto unlock;seq_printf (p,"%3d: " , i);for_each_present_cpu (cpu)seq_printf (p,"%10u " ,kstat_irqs_cpu (i, cpu)); -seq_printf (p," %10s" , desc->chip->name ? :"-" ); +seq_printf (p," %10s" , irq_desc[i].chip->name ? :"-" );seq_printf (p," %s" , action->name);for (action = action->next; action; action = action->next)seq_printf (p,", %s" , action->name);seq_putc (p,'\n' ); unlock: -spin_unlock_irqrestore (&desc->lock, flags); +spin_unlock_irqrestore (&irq_desc[i].lock, flags); }else if (i ==NR_IRQS ) {#ifdef CONFIG_ARCH_ACORN show_fiq_list (p, v);
arch/avr32/kernel/irq.c +3 -5
@@ -51,10 +51,8 @@ int show_interrupts(struct seq_file *p, }if (i <NR_IRQS ) { -struct irq_desc *desc =irq_desc (i); - -spin_lock_irqsave (&desc->lock, flags); - action = desc->action; +spin_lock_irqsave (&irq_desc[i].lock, flags); + action = irq_desc[i].action;if (!action) goto unlock;
@@ -68,7 +66,7 @@ int show_interrupts(struct seq_file *p,seq_putc (p,'\n' ); unlock: -spin_unlock_irqrestore (&desc->lock, flags); +spin_unlock_irqrestore (&irq_desc[i].lock, flags); }return 0 ;
arch/cris/kernel/irq.c +1 -1
@@ -99,7 +99,7 @@ asmlinkage void do_IRQ(int irq, struct pprintk ("do_IRQ: stack overflow: %lX\n" , sp);show_stack (NULL , (unsigned long *)sp); } -__do_IRQ (irq, &irq_desc[irq]); +__do_IRQ (irq);irq_exit ();set_irq_regs (old_regs); }
arch/h8300/kernel/irq.c +1 -1
@@ -176,7 +176,7 @@ void __init init_IRQ(void) asmlinkage void do_IRQ(int irq) {irq_enter (); -__do_IRQ (irq, &irq_desc[irq]); +__do_IRQ (irq);irq_exit (); }
arch/ia64/kernel/iosapic.c +1 -1
@@ -452,7 +452,7 @@ iosapic_ack_edge_irq (unsigned int irq)irq_desc_t *idesc = irq_desc + irq;irq_complete_move (irq); -move_native_irq (irq, idesc); +move_native_irq (irq);/* * Once we have recorded IRQ_PENDING already, we can mask the * interrupt for real. This prevents IRQ storms from unhandled
arch/ia64/kernel/msi_ia64.c +1 -1
@@ -120,7 +120,7 @@ void ia64_teardown_msi_irq(unsigned intstatic void ia64_ack_msi_irq (unsigned int irq) {irq_complete_move (irq); -move_native_irq (irq, &irq_desc[irq]); +move_native_irq (irq);ia64_eoi (); }
arch/ia64/sn/kernel/irq.c +1 -1
@@ -110,7 +110,7 @@ static void sn_ack_irq(unsigned int irq)HUB_S ((u64 *)LOCAL_MMR_ADDR (SH_EVENT_OCCURRED_ALIAS ), mask);__set_bit (irq, (volatile void *)pda->sn_in_service_ivecs); -move_native_irq (irq, &irq_desc[irq]); +move_native_irq (irq); }static void sn_end_irq (unsigned int irq)
arch/ia64/sn/kernel/msi_sn.c +1 -1
@@ -210,7 +210,7 @@ static void sn_set_msi_irq_affinity(unsistatic void sn_ack_msi_irq (unsigned int irq) { -move_native_irq (irq, &irq_desc[irq]); +move_native_irq (irq);ia64_eoi (); }
arch/m32r/kernel/irq.c +1 -1
@@ -84,7 +84,7 @@ asmlinkage unsigned int do_IRQ(int irq,#ifdef CONFIG_DEBUG_STACKOVERFLOW /* FIXME M32R */ #endif -__do_IRQ (irq, &irq_desc[irq]); +__do_IRQ (irq);irq_exit ();set_irq_regs (old_regs);
arch/m68knommu/kernel/irq.c +1 -1
@@ -23,7 +23,7 @@ asmlinkage void do_IRQ(int irq, struct pstruct pt_regs *oldregs =set_irq_regs (regs);irq_enter (); -__do_IRQ (irq, &irq_desc[irq]); +__do_IRQ (irq);irq_exit ();set_irq_regs (oldregs);
arch/parisc/kernel/irq.c +1 -1
@@ -363,7 +363,7 @@ void do_cpu_irq_mask(struct pt_regs *reg goto set_out; }#endif -__do_IRQ (irq, irq_desc); +__do_IRQ (irq); out:irq_exit ();
arch/powerpc/platforms/powermac/pic.c +1 -1
@@ -221,7 +221,7 @@ static irqreturn_t gatwick_action(int cpcontinue ; irq +=__ilog2 (bits);spin_unlock_irqrestore (&pmac_pic_lock, flags); -__do_IRQ (irq, &irq_desc[irq]); +__do_IRQ (irq);spin_lock_irqsave (&pmac_pic_lock, flags); rc =IRQ_HANDLED ; }
arch/um/kernel/irq.c +1 -1
@@ -332,7 +332,7 @@ unsigned int do_IRQ(int irq, struct uml_ {struct pt_regs *old_regs =set_irq_regs ((struct pt_regs *)regs);irq_enter (); -__do_IRQ (irq, &irq_desc[irq]); +__do_IRQ (irq);irq_exit ();set_irq_regs (old_regs);return 1 ;
drivers/parisc/dino.c +1 -2
@@ -389,10 +389,9 @@ ilr_again:do {int local_irq =__ffs (mask);int irq = dino_dev->global_irq[local_irq]; -struct irq_desc *desc =to_irq_desc (irq);DBG (KERN_DEBUG "%s(%d, %p) mask 0x%x\n" , __func__, irq, intr_dev, mask); -__do_IRQ (irq, desc); +__do_IRQ (irq); mask &= ~(1 << local_irq); }while (mask);
drivers/parisc/eisa.c +1 -3
@@ -202,7 +202,6 @@ static irqreturn_t eisa_irq(int wax_irq, {int irq =gsc_readb (0xfc01f000 );/* EISA supports 16 irqs */ unsigned long flags; -struct irq_desc *desc;spin_lock_irqsave (&eisa_irq_lock, flags);/* read IRR command */
@@ -234,8 +233,7 @@ static irqreturn_t eisa_irq(int wax_irq, }spin_unlock_irqrestore (&eisa_irq_lock, flags); - desc =to_irq_desc (irq); -__do_IRQ (irq, desc); +__do_IRQ (irq);spin_lock_irqsave (&eisa_irq_lock, flags);/* unmask */
drivers/parisc/gsc.c +1 -2
@@ -87,8 +87,7 @@ irqreturn_t gsc_asic_intr(int gsc_asic_ido {int local_irq =__ffs (irr);unsigned int irq = gsc_asic->global_irq[local_irq]; -struct irq_desc *desc =to_irq_desc (irq); -__do_IRQ (irq, desc); +__do_IRQ (irq); irr &= ~(1 << local_irq); }while (irr);
drivers/parisc/superio.c +1 -3
@@ -99,7 +99,6 @@ superio_interrupt(int parent_irq, void * {u8 results;u8 local_irq; -struct irq_desc *desc;/* Poll the 8259 to see if there's an interrupt. */ outb (OCW3_POLL ,IC_PIC1 +0 );
@@ -140,8 +139,7 @@ superio_interrupt(int parent_irq, void * }/* Call the appropriate device's interrupt */ - desc =to_irq_desc (local_irq); -__do_IRQ (local_irq, desc); +__do_IRQ (local_irq);/* set EOI - forces a new interrupt if a lower priority device * still needs service.
drivers/xen/events.c +1 -1
@@ -640,7 +640,7 @@ static void ack_dynirq(unsigned int irq) {int evtchn =evtchn_from_irq (irq); -move_native_irq (irq,to_irq_desc (irq)); +move_native_irq (irq);if (VALID_EVTCHN (evtchn))clear_evtchn (evtchn);
include/linux/irq.h +5 -5
@@ -244,7 +244,7 @@ extern int setup_irq(unsigned int irq, s#ifdef CONFIG_GENERIC_PENDING_IRQ void set_pending_irq (unsigned int irq,cpumask_t mask); -void move_native_irq (int irq,struct irq_desc *desc); +void move_native_irq (int irq);void move_masked_irq (int irq,struct irq_desc *desc);#else /* CONFIG_GENERIC_PENDING_IRQ */
@@ -253,7 +253,7 @@ static inline void move_irq(int irq) { } -static inline void move_native_irq (int irq,struct irq_desc *desc) +static inline void move_native_irq (int irq) { }
@@ -269,7 +269,7 @@ static inline void set_pending_irq(unsig#else /* CONFIG_SMP */ -#define move_native_irq (x, y) +#define move_native_irq (x)#define move_masked_irq (x, y)#endif /* CONFIG_SMP */
@@ -302,7 +302,7 @@ extern void handle_bad_irq(unsigned int* Monolithic do_IRQ implementation. */ #ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ -extern unsigned int __do_IRQ (unsigned int irq,struct irq_desc *desc); +extern unsigned int __do_IRQ (unsigned int irq);#endif /*
@@ -319,7 +319,7 @@ static inline void generic_handle_irq_deif (likely (desc->handle_irq)) desc->handle_irq (irq, desc);else -__do_IRQ (irq, desc); +__do_IRQ (irq);#endif }
kernel/irq/handle.c +2 -1
@@ -385,10 +385,11 @@ irqreturn_t handle_IRQ_event(unsigned in* This is the original x86 implementation which is used for every * interrupt type. */ -unsigned int __do_IRQ (unsigned int irq,struct irq_desc *desc) +unsigned int __do_IRQ (unsigned int irq) {struct irqaction *action;unsigned int status; +struct irq_desc *desc =to_irq_desc (irq);kstat_irqs_this_cpu (desc)++;if (CHECK_IRQ_PER_CPU (desc->status)) {
kernel/irq/migration.c +3 -1
@@ -57,8 +57,10 @@ void move_masked_irq(int irq, struct irqcpus_clear (desc->pending_mask); } -void move_native_irq (int irq,struct irq_desc *desc) +void move_native_irq (int irq) { +struct irq_desc *desc =to_irq_desc (irq); +if (likely (!(desc->status &IRQ_MOVE_PENDING )))return ;
arch/x86/kernel/io_apic.c +1 -3
@@ -2426,10 +2426,8 @@ static void ack_x2apic_edge(unsigned intstatic void ack_apic_edge (unsigned int irq) { -struct irq_desc *desc =to_irq_desc (irq); -irq_complete_move (irq); -move_native_irq (irq, desc); +move_native_irq (irq);ack_APIC_irq (); }
PATCH 1/1 irq: rename irq_desc() to to_irq_desc() - fix #2
kstat_irqs related, so only CONFIG_DYN_ARRAY/SPARSE_IRQ will have kstat_irqs in irq_desc
other arch still have kstat_irqs in kstat
--- arch/alpha/kernel/irq.c | 2 +- arch/alpha/kernel/irq_alpha.c | 2 +- arch/arm/kernel/irq.c | 2 +- arch/arm/mach-ns9xxx/irq.c | 3 ++- arch/avr32/kernel/irq.c | 4 ++-- arch/cris/kernel/irq.c | 2 +- arch/frv/kernel/irq.c | 2 +- arch/h8300/kernel/irq.c | 2 +- arch/ia64/kernel/irq.c | 2 +- arch/ia64/kernel/irq_ia64.c | 8 ++++---- arch/m32r/kernel/irq.c | 2 +- arch/mips/kernel/irq.c | 2 +- arch/mips/sgi-ip22/ip22-int.c | 2 +- arch/mips/sgi-ip22/ip22-time.c | 2 +- arch/mips/sibyte/bcm1480/smp.c | 2 +- arch/mips/sibyte/sb1250/smp.c | 2 +- arch/mn10300/kernel/irq.c | 2 +- arch/parisc/kernel/irq.c | 2 +- arch/powerpc/kernel/irq.c | 2 +- arch/powerpc/platforms/cell/interrupt.c | 2 +- arch/sh/kernel/irq.c | 2 +- arch/sparc64/kernel/irq.c | 2 +- arch/sparc64/kernel/time.c | 3 +-- arch/um/kernel/irq.c | 2 +- arch/xtensa/kernel/irq.c | 2 +- include/linux/irq.h | 5 +++++ include/linux/kernel_stat.h | 4 ++-- kernel/irq/chip.c | 20 ++++++++++++++++++++ kernel/irq/handle.c | 10 ++++++++++ 29 files changed, 67 insertions(+), 32 deletions(-)
arch/alpha/kernel/irq.c +1 -1
@@ -89,7 +89,7 @@ show_interrupts(struct seq_file *p, voidseq_printf (p,"%10u " ,kstat_irqs (irq));#else for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (irq, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[irq]);#endif seq_printf (p," %14s" , irq_desc[irq].chip->typename); seq_printf(p, " %c%s",
arch/alpha/kernel/irq_alpha.c +1 -1
@@ -64,7 +64,7 @@ do_entInt(unsigned long type, unsigned lsmp_percpu_timer_interrupt (regs); cpu =smp_processor_id ();if (cpu != boot_cpuid) { - irq_desc[RTC_IRQ ].kstat_irqs[cpu]++; +kstat_cpu (cpu).irqs[RTC_IRQ ]++; }else {handle_irq (RTC_IRQ ); }
arch/arm/kernel/irq.c +1 -1
@@ -76,7 +76,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%3d: " , i);for_each_present_cpu (cpu) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, cpu)); +seq_printf (p,"%10u " ,kstat_cpu (cpu).irqs[i]);seq_printf (p," %10s" , irq_desc[i].chip->name ? :"-" );seq_printf (p," %s" , action->name);for (action = action->next; action; action = action->next)
arch/arm/mach-ns9xxx/irq.c +2 -1
@@ -63,6 +63,7 @@ static struct irq_chip ns9xxx_chip = {#else static void handle_prio_irq (unsigned int irq,struct irq_desc *desc) { +unsigned int cpu =smp_processor_id ();struct irqaction *action;irqreturn_t action_ret;
@@ -71,7 +72,7 @@ static void handle_prio_irq(unsigned intBUG_ON (desc->status &IRQ_INPROGRESS ); desc->status &= ~(IRQ_REPLAY |IRQ_WAITING ); -kstat_irqs_this_cpu (desc)++; +kstat_cpu (cpu).irqs[irq]++; action = desc->action;if (unlikely (!action || (desc->status &IRQ_DISABLED )))
arch/avr32/kernel/irq.c +2 -2
@@ -58,8 +58,8 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%3d: " , i);for_each_online_cpu (cpu) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, cpu)); -seq_printf (p," %8s" , desc->chip->name ? :"-" ); +seq_printf (p,"%10u " ,kstat_cpu (cpu).irqs[i]); +seq_printf (p," %8s" , irq_desc[i].chip->name ? :"-" );seq_printf (p," %s" , action->name);for (action = action->next; action; action = action->next)seq_printf (p,", %s" , action->name);
arch/cris/kernel/irq.c +1 -1
@@ -66,7 +66,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%10u " ,kstat_irqs (i));#else for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#endif seq_printf (p," %14s" , irq_desc[i].chip->typename);seq_printf (p," %s" , action->name);
arch/frv/kernel/irq.c +1 -1
@@ -74,7 +74,7 @@ int show_interrupts(struct seq_file *p,if (action) {seq_printf (p,"%3d: " , i);for_each_present_cpu (cpu) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, cpu)); +seq_printf (p,"%10u " ,kstat_cpu (cpu).irqs[i]);seq_printf (p," %10s" , irq_desc[i].chip->name ? :"-" );seq_printf (p," %s" , action->name); for (action = action->next;
arch/h8300/kernel/irq.c +1 -1
@@ -196,7 +196,7 @@ int show_interrupts(struct seq_file *p,if (!action) goto unlock;seq_printf (p,"%3d: " ,i); -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);seq_printf (p," %14s" , irq_desc[i].chip->name);seq_printf (p,"-%-8s" , irq_desc[i].name);seq_printf (p," %s" , action->name);
arch/ia64/kernel/irq.c +1 -1
@@ -80,7 +80,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%10u " ,kstat_irqs (i));#else for_each_online_cpu (j) { -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]); }#endif seq_printf (p," %14s" , irq_desc[i].chip->name);
arch/ia64/kernel/irq_ia64.c +4 -4
@@ -495,9 +495,9 @@ ia64_handle_irq (ia64_vector vector, strwhile (vector !=IA64_SPURIOUS_INT_VECTOR ) {if (unlikely (IS_LOCAL_TLB_FLUSH (vector))) {smp_local_flush_tlb (); -kstat_irqs_this_cpu (&irq_desc[vector])++; + kstat_this_cpu.irqs[vector]++; }else if (unlikely (IS_RESCHEDULE (vector))) -kstat_irqs_this_cpu (&irq_desc[vector])++; + kstat_this_cpu.irqs[vector]++;else {int irq =local_vector_to_irq (vector);
@@ -553,9 +553,9 @@ void ia64_process_pending_intr(void)while (vector !=IA64_SPURIOUS_INT_VECTOR ) {if (unlikely (IS_LOCAL_TLB_FLUSH (vector))) {smp_local_flush_tlb (); -kstat_irqs_this_cpu (&irq_desc[vector])++; + kstat_this_cpu.irqs[vector]++; }else if (unlikely (IS_RESCHEDULE (vector))) -kstat_irqs_this_cpu (&irq_desc[vector])++; + kstat_this_cpu.irqs[vector]++;else {struct pt_regs *old_regs =set_irq_regs (NULL );int irq =local_vector_to_irq (vector);
arch/m32r/kernel/irq.c +1 -1
@@ -52,7 +52,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%10u " ,kstat_irqs (i));#else for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#endif seq_printf (p," %14s" , irq_desc[i].chip->typename);seq_printf (p," %s" , action->name);
arch/mips/kernel/irq.c +1 -1
@@ -108,7 +108,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%10u " ,kstat_irqs (i));#else for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#endif seq_printf (p," %14s" , irq_desc[i].chip->name);seq_printf (p," %s" , action->name);
arch/mips/sgi-ip22/ip22-int.c +1 -1
@@ -164,7 +164,7 @@ static void indy_buserror_irq(void)int irq =SGI_BUSERR_IRQ ;irq_enter (); -kstat_irqs_this_cpu (&irq_desc[irq])++; + kstat_this_cpu.irqs[irq]++;ip22_be_interrupt (irq);irq_exit (); }
arch/mips/sgi-ip22/ip22-time.c +1 -1
@@ -186,7 +186,7 @@ void indy_8254timer_irq(void)char c;irq_enter (); -kstat_irqs_this_cpu (&irq_desc[irq])++; + kstat_this_cpu.irqs[irq]++;printk (KERN_ALERT "Oops, got 8254 interrupt.\n" );ArcRead (0 , &c,1 , &cnt);ArcEnterInteractiveMode ();
arch/mips/sibyte/bcm1480/smp.c +1 -1
@@ -180,7 +180,7 @@ void bcm1480_mailbox_interrupt(void)int cpu =smp_processor_id ();unsigned int action; - irq_desc[K_BCM1480_INT_MBOX_0_0 ].kstat_irqs[cpu]++; + kstat_this_cpu.irqs[K_BCM1480_INT_MBOX_0_0 ]++;/* Load the mailbox register to figure out what we're supposed to do */ action = (__raw_readq (mailbox_0_regs[cpu]) >>48 ) &0xffff ;
arch/mips/sibyte/sb1250/smp.c +1 -1
@@ -168,7 +168,7 @@ void sb1250_mailbox_interrupt(void)int cpu =smp_processor_id ();unsigned int action; - irq_desc[K_INT_MBOX_0 ].kstat_irqs[cpu]++; + kstat_this_cpu.irqs[K_INT_MBOX_0 ]++;/* Load the mailbox register to figure out what we're supposed to do */ action = (____raw_readq (mailbox_regs[cpu]) >>48 ) &0xffff ;
arch/mn10300/kernel/irq.c +1 -1
@@ -201,7 +201,7 @@ int show_interrupts(struct seq_file *p,if (action) {seq_printf (p,"%3d: " , i);for_each_present_cpu (cpu) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, cpu)); +seq_printf (p,"%10u " ,kstat_cpu (cpu).irqs[i]);seq_printf (p," %14s.%u" , irq_desc[i].chip->name, (GxICR (i) & GxICR_LEVEL) >> GxICR_LEVEL_SHIFT);
arch/parisc/kernel/irq.c +1 -1
@@ -183,7 +183,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%3d: " , i);#ifdef CONFIG_SMP for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#else seq_printf (p,"%10u " ,kstat_irqs (i));#endif
arch/powerpc/kernel/irq.c +1 -1
@@ -190,7 +190,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%3d: " , i);#ifdef CONFIG_SMP for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#else seq_printf (p,"%10u " ,kstat_irqs (i));#endif /* CONFIG_SMP */
arch/powerpc/platforms/cell/interrupt.c +1 -1
@@ -254,7 +254,7 @@ static void handle_iic_irq(unsigned int goto out_eoi; } -kstat_irqs_this_cpu (desc)++; +kstat_cpu (cpu).irqs[irq]++;/* Mark the IRQ currently in progress.*/ desc->status |=IRQ_INPROGRESS ;
arch/sh/kernel/irq.c +1 -1
@@ -51,7 +51,7 @@ int show_interrupts(struct seq_file *p, goto unlock;seq_printf (p,"%3d: " ,i);for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);seq_printf (p," %14s" , irq_desc[i].chip->name);seq_printf (p,"-%-8s" , irq_desc[i].name);seq_printf (p," %s" , action->name);
arch/sparc64/kernel/irq.c +1 -1
@@ -185,7 +185,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%10u " ,kstat_irqs (i));#else for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#endif seq_printf (p," %9s" , irq_desc[i].chip->typename);seq_printf (p," %s" , action->name);
arch/sparc64/kernel/time.c +1 -2
@@ -16,7 +16,6 @@#include <linux/param.h> #include <linux/string.h> #include <linux/mm.h> -#include <linux/irq.h> #include <linux/interrupt.h> #include <linux/time.h> #include <linux/timex.h>
@@ -943,7 +942,7 @@ void timer_interrupt(int irq, struct pt_irq_enter (); - irq_desc[0 ].kstat_irqs[0 ]++; + kstat_this_cpu.irqs[0 ]++;if (unlikely (!evt->event_handler)) { printk(KERN_WARNING
arch/um/kernel/irq.c +1 -1
@@ -42,7 +42,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%10u " ,kstat_irqs (i));#else for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#endif seq_printf (p," %14s" , irq_desc[i].chip->typename);seq_printf (p," %s" , action->name);
arch/xtensa/kernel/irq.c +1 -1
@@ -99,7 +99,7 @@ int show_interrupts(struct seq_file *p,seq_printf (p,"%10u " ,kstat_irqs (i));#else for_each_online_cpu (j) -seq_printf (p,"%10u " ,kstat_irqs_cpu (i, j)); +seq_printf (p,"%10u " ,kstat_cpu (j).irqs[i]);#endif seq_printf (p," %14s" , irq_desc[i].chip->typename);seq_printf (p," %s" , action->name);
include/linux/irq.h +5 -0
@@ -219,8 +219,13 @@ extern struct irq_desc *irq_descX;#endif +#ifdef CONFIG_HAVE_DYN_ARRAY #define kstat_irqs_this_cpu (DESC ) \ ((DESC)->kstat_irqs[smp_processor_id()]) +#else +#define kstat_irqs_this_cpu (irq) \ + kstat_this_cpu.irqs[irq] +#endif /* * Migration helpers for obsolete names, they will go away:
include/linux/kernel_stat.h +2 -2
@@ -28,7 +28,7 @@ struct cpu_usage_stat {struct kernel_stat {struct cpu_usage_stat cpustat; -#ifndef CONFIG_GENRIC_HARDIRQS +#ifndef CONFIG_HAVE_DYN_ARRAY unsigned int irqs[NR_IRQS ];#endif };
@@ -41,7 +41,7 @@ DECLARE_PER_CPU(struct kernel_stat, kstaextern unsigned long long nr_context_switches (void ); -#ifndef CONFIG_GENERIC_HARDIRQS +#ifndef CONFIG_HAVE_DYN_ARRAY static inline unsigned int kstat_irqs_cpu (unsigned int irq,int cpu) {return kstat_cpu (cpu).irqs[irq];
kernel/irq/chip.c +20 -0
@@ -326,7 +326,11 @@ handle_simple_irq(unsigned int irq, struif (unlikely (desc->status &IRQ_INPROGRESS )) goto out_unlock; desc->status &= ~(IRQ_REPLAY |IRQ_WAITING ); +#ifdef CONFIG_HAVE_DYN_ARRAY kstat_irqs_this_cpu (desc)++; +#else +kstat_irqs_this_cpu (irq)++; +#endif action = desc->action;if (unlikely (!action || (desc->status &IRQ_DISABLED )))
@@ -367,7 +371,11 @@ handle_level_irq(unsigned int irq, strucif (unlikely (desc->status &IRQ_INPROGRESS )) goto out_unlock; desc->status &= ~(IRQ_REPLAY |IRQ_WAITING ); +#ifdef CONFIG_HAVE_DYN_ARRAY kstat_irqs_this_cpu (desc)++; +#else +kstat_irqs_this_cpu (irq)++; +#endif /* * If its disabled or no action available
@@ -414,7 +422,11 @@ handle_fasteoi_irq(unsigned int irq, str goto out; desc->status &= ~(IRQ_REPLAY |IRQ_WAITING ); +#ifdef CONFIG_HAVE_DYN_ARRAY kstat_irqs_this_cpu (desc)++; +#else +kstat_irqs_this_cpu (irq)++; +#endif /* * If its disabled or no action available
@@ -479,7 +491,11 @@ handle_edge_irq(unsigned int irq, struct goto out_unlock; } +#ifdef CONFIG_HAVE_DYN_ARRAY kstat_irqs_this_cpu (desc)++; +#else +kstat_irqs_this_cpu (irq)++; +#endif /* Start handling the irq */ desc->chip->ack (irq);
@@ -534,7 +550,11 @@ handle_percpu_irq(unsigned int irq, stru {irqreturn_t action_ret; +#ifdef CONFIG_HAVE_DYN_ARRAY kstat_irqs_this_cpu (desc)++; +#else +kstat_irqs_this_cpu (irq)++; +#endif if (desc->chip->ack) desc->chip->ack (irq);
kernel/irq/handle.c +10 -0
@@ -34,7 +34,11 @@ void handle_bad_irq(unsigned int irq, struct irq_desc *desc) {print_irq_desc (irq, desc); +#ifdef CONFIG_HAVE_DYN_ARRAY kstat_irqs_this_cpu (desc)++; +#else +kstat_irqs_this_cpu (irq)++; +#endif ack_bad_irq (irq); }
@@ -391,7 +395,11 @@ unsigned int __do_IRQ(unsigned int irq)unsigned int status;struct irq_desc *desc =to_irq_desc (irq); +#ifdef CONFIG_HAVE_DYN_ARRAY kstat_irqs_this_cpu (desc)++; +#else +kstat_irqs_this_cpu (irq)++; +#endif if (CHECK_IRQ_PER_CPU (desc->status)) {irqreturn_t action_ret;
@@ -493,10 +501,12 @@ void early_init_irq_lock_class(void) }#endif +#ifdef CONFIG_HAVE_DYN_ARRAY unsigned int kstat_irqs_cpu (unsigned int irq,int cpu) {struct irq_desc *desc =to_irq_desc (irq);return desc->kstat_irqs[cpu]; } +#endif EXPORT_SYMBOL (kstat_irqs_cpu);
PATCH 1/1 irq: rename irq_desc() to to_irq_desc() - fix #3
add create_irq_nr, and retore create_irq to old
--- arch/arm/mach-iop13xx/msi.c | 4 ++-- arch/ia64/kernel/iosapic.c | 6 +++--- arch/ia64/kernel/irq_ia64.c | 2 +- arch/ia64/kernel/msi_ia64.c | 2 +- arch/ia64/sn/kernel/msi_sn.c | 2 +- arch/x86/kernel/io_apic.c | 18 +++++++++++++++--- drivers/pci/htirq.c | 2 +- drivers/pci/intel-iommu.c | 2 +- include/linux/irq.h | 3 ++- 9 files changed, 27 insertions(+), 14 deletions(-)
arch/arm/mach-iop13xx/msi.c +2 -2
@@ -125,7 +125,7 @@ void __init iop13xx_msi_init(void)/* * Dynamic irq allocate and deallocation */ -unsigned int create_irq (unsigned not_used) +int create_irq (void ) {int irq, pos;
@@ -173,7 +173,7 @@ static struct irq_chip iop13xx_msi_chipint arch_setup_msi_irq (struct pci_dev *pdev,struct msi_desc *desc) { -int id, irq =create_irq (0 ); +int id, irq =create_irq ();struct msi_msg msg;if (irq <0 )
arch/ia64/kernel/iosapic.c +3 -3
@@ -532,7 +532,7 @@ iosapic_reassign_vector (int irq)int new_irq;if (iosapic_intr_info[irq].count) { - new_irq =create_irq (0 ); + new_irq =create_irq ();if (new_irq <0 )panic ("%s: out of interrupt vectors!\n" , __func__); printk(KERN_INFO "Reassigning vector %d to %d\n",
@@ -783,7 +783,7 @@ iosapic_register_intr (unsigned int gsi, goto unlock_iosapic_lock; } }else - irq =create_irq (0 ); + irq =create_irq ();/* If vector is running out, we try to find a sharable vector */ if (irq <0 ) {
@@ -922,7 +922,7 @@ iosapic_register_platform_intr (u32 int_ delivery =IOSAPIC_PMI ;break ;case ACPI_INTERRUPT_INIT : - irq =create_irq (0 ); + irq =create_irq ();if (irq <0 )panic ("%s: out of interrupt vectors!\n" , __func__); vector =irq_to_vector (irq);
arch/ia64/kernel/irq_ia64.c +1 -1
@@ -403,7 +403,7 @@ void destroy_and_reserve_irq(unsigned in/* * Dynamic irq allocate and deallocation for MSI */ -unsigned int create_irq (unsigned int not_used) +int create_irq (void ) {unsigned long flags;int irq, vector, cpu;
arch/ia64/kernel/msi_ia64.c +1 -1
@@ -84,7 +84,7 @@ int ia64_setup_msi_irq(struct pci_dev *pint irq, vector;cpumask_t mask; - irq =create_irq (0 ); + irq =create_irq ();if (irq <0 )return irq;
arch/ia64/sn/kernel/msi_sn.c +1 -1
@@ -83,7 +83,7 @@ int sn_setup_msi_irq(struct pci_dev *pdeif (provider ==NULL || provider->dma_map_consistent ==NULL )return -EINVAL ; - irq =create_irq (0 ); + irq =create_irq ();if (irq <0 )return irq;
arch/x86/kernel/io_apic.c +15 -3
@@ -3039,7 +3039,7 @@ device_initcall(ioapic_init_sysfs);/* * Dynamic irq allocate and deallocation */ -unsigned int create_irq (unsigned int irq_want) +unsigned int create_irq_nr (unsigned int irq_want) {/* Allocate an unused irq */ unsigned int irq;
@@ -3074,6 +3074,18 @@ unsigned int create_irq(unsigned int irqreturn irq; } +int create_irq (void ) +{ +int irq; + + irq =create_irq_nr (nr_irqs -1 ); + +if (irq ==0 ) + irq =-1 ; + +return irq; +} +void destroy_irq (unsigned int irq) {unsigned long flags;
@@ -3346,7 +3358,7 @@ int arch_setup_msi_irq(struct pci_dev *d irq_want =build_irq_for_pci_dev (dev) +0x100 ; - irq =create_irq (irq_want); + irq =create_irq_nr (irq_want);if (irq ==0 )return -1 ;
@@ -3388,7 +3400,7 @@ int arch_setup_msi_irqs(struct pci_dev * irq_want =build_irq_for_pci_dev (dev) +0x100 ; sub_handle =0 ;list_for_each_entry (desc, &dev->msi_list, list) { - irq =create_irq (irq_want--); + irq =create_irq_nr (irq_want--);if (irq ==0 )return -1 ;#ifdef CONFIG_INTR_REMAP
drivers/pci/htirq.c +1 -1
@@ -139,7 +139,7 @@ int __ht_create_irq(struct pci_dev *dev, cfg->msg.address_hi =0xffffffff ; irq_want=build_irq_for_pci_dev (dev); - irq =create_irq (irq_want + idx); + irq =create_irq_nr (irq_want + idx);if (irq ==0 ) {kfree (cfg);return -EBUSY ;
drivers/pci/intel-iommu.c +1 -1
@@ -915,7 +915,7 @@ int dmar_set_interrupt(struct intel_iomm {int irq, ret; - irq =create_irq (0 ); + irq =create_irq ();if (!irq) {printk (KERN_ERR "IOMMU: no free vectors\n" );return -EINVAL ;
include/linux/irq.h +2 -1
@@ -396,7 +396,8 @@ extern void set_irq_noprobe(unsigned intextern void set_irq_probe (unsigned int irq);/* Handle dynamic irq creation and destruction */ -extern unsigned int create_irq (unsigned int irq_want); +extern unsigned int create_irq_nr (unsigned int irq_want); +extern int create_irq (void );extern void destroy_irq (unsigned int irq);/* Test to see if a driver has successfully requested an irq */
Ingo Molnar
AppliedRe: [PATCH] irq: rename irq_desc() to to_irq_desc() - fix #3
Quoted 1 line · Yinghai Lu
add
create_irq_nr, and retorecreate_irqto old
applied all 3 patches to tip/irq/sparseirq - thanks Yinghai!
Ingo
Re: [PATCH] irq: rename irq_desc() to to_irq_desc() - fix #3
Quoted 5 lines · Ingo Molnar
Quoted 1 line · Yinghai Lu
add
create_irq_nr, and retorecreate_irqto oldapplied all 3 patches to tip/irq/sparseirq - thanks Yinghai!
build fix for tip/master, from tip/x86/spinlocks. I merged that branch into tip/irq/sparseirq and applied this fix.
Ingo
------------>
Quoted 1 line
From
1f73df742c77472d2e14e47b8c568218952af1d7Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Tue, 19 Aug 2008 02:33:39 +0200
Subject: [PATCH] irq: build fix
fix:
arch/x86/xen/spinlock.c: In function 'xen_spin_lock_slow':
arch/x86/xen/spinlock.c:90: error: 'struct kernel_stat' has no member named 'irqs'
--- arch/x86/xen/spinlock.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/x86/xen/spinlock.c +1 -1
@@ -87,7 +87,7 @@ static noinline int xen_spin_lock_slow(struct raw_spinlock *lock)/* block until irq becomes pending */ xen_poll_irq (irq); - kstat_this_cpu.irqs[irq]++; +kstat_irqs_this_cpu (&irq_desc[irq])++; out:unspinning_lock (xl);
Re: [PATCH] irq: rename irq_desc() to to_irq_desc() - fix #3
Quoted 36 lines · Ingo Molnar
Quoted 5 lines · Ingo Molnar
Quoted 1 line · Yinghai Lu
add
create_irq_nr, and retorecreate_irqto oldapplied all 3 patches to tip/irq/sparseirq - thanks Yinghai!
build fix for tip/master, from tip/x86/spinlocks. I merged that branch into tip/irq/sparseirq and applied this fix.
Ingo
------------>
From1f73df742c77472d2e14e47b8c568218952af1d7Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Tue, 19 Aug 2008 02:33:39 +0200
Subject: [PATCH] irq: build fixfix:
arch/x86/xen/spinlock.c: In function 'xen_spin_lock_slow':
arch/x86/xen/spinlock.c:90: error: 'structkernel_stat' has no member named 'irqs'Signed-off-by Ingo Molnar <[email protected]>--- arch/x86/xen/spinlock.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)arch/x86/xen/spinlock.c +0
-0
arch/x86/xen/spinlock.c static noinline int xen_spin_lock_slow(struct raw_spinlock *lock) · line 93
Quoted 8 lines
arch/x86/xen/spinlock.c +1
-1@@ -87,7 +87,7 @@ static noinline int xen_spin_lock_slow(struct raw_spinlock *lock)/* block until irq becomes pending */ xen_poll_irq (irq); - kstat_this_cpu.irqs[irq]++; +kstat_irqs_this_cpu (&irq_desc[irq])++; out:unspinning_lock (xl);
should be
kstat_irqs_this_cpu(to_irq_desc(irq))++;
otherwise when CONFIG_HAVE_SPARSE_IRQ is set, it will fail.
when sparse_irq is set, only have irq_descX list...
YH
Re: [PATCH] irq: rename irq_desc() to to_irq_desc() - fix #3
Quoted 7 lines · Yinghai Lu
Review
Quoted 6 lines
(quoted diff) +1
-1- kstat_this_cpu.irqs[irq]++; + kstat_irqs_this_cpu(&irq_desc[irq])++; out: unspinning_lock(xl);
Quoted 7 lines
should be
kstat_irqs_this_cpu(to_irq_desc(irq))++;
otherwise when
CONFIG_HAVE_SPARSE_IRQis set, it will fail.when
sparse_irqis set, only haveirq_descXlist...
ok, fixed it - updated patch below. Build testing just triggered it as well.
Ingo
----------->
Quoted 1 line
From
ba0540e8ae86abbe55b643e230ce276984fbb650Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Tue, 19 Aug 2008 02:33:39 +0200
Subject: [PATCH] irq: build fix
fix:
arch/x86/xen/spinlock.c: In function 'xen_spin_lock_slow':
arch/x86/xen/spinlock.c:90: error: 'struct kernel_stat' has no member named 'irqs'
--- arch/x86/xen/spinlock.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/x86/xen/spinlock.c +1 -1
@@ -87,7 +87,7 @@ static noinline int xen_spin_lock_slow(struct raw_spinlock *lock)/* block until irq becomes pending */ xen_poll_irq (irq); - kstat_this_cpu.irqs[irq]++; +kstat_irqs_this_cpu (to_irq_desc (irq))++; out:unspinning_lock (xl);