From 7182297ebba6bfe50f594f0d2753b5867ea629fe Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 6 Feb 2011 22:23:47 +0000 Subject: [PATCH 1/5] score: Convert irq_chip to new functions Use the proper accessor functions in show_interrupts() while at it. Signed-off-by: Thomas Gleixner Acked-by: Chen Liqin --- arch/score/kernel/irq.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/arch/score/kernel/irq.c b/arch/score/kernel/irq.c index 47647dde09ca..ee68ec633242 100644 --- a/arch/score/kernel/irq.c +++ b/arch/score/kernel/irq.c @@ -52,9 +52,9 @@ asmlinkage void do_IRQ(int irq) irq_exit(); } -static void score_mask(unsigned int irq_nr) +static void score_mask(struct irq_data *d) { - unsigned int irq_source = 63 - irq_nr; + unsigned int irq_source = 63 - d->irq; if (irq_source < 32) __raw_writel((__raw_readl(SCORE_PIC + INT_MASKL) | \ @@ -64,9 +64,9 @@ static void score_mask(unsigned int irq_nr) (1 << (irq_source - 32))), SCORE_PIC + INT_MASKH); } -static void score_unmask(unsigned int irq_nr) +static void score_unmask(struct irq_data *d) { - unsigned int irq_source = 63 - irq_nr; + unsigned int irq_source = 63 - d->irq; if (irq_source < 32) __raw_writel((__raw_readl(SCORE_PIC + INT_MASKL) & \ @@ -78,9 +78,9 @@ static void score_unmask(unsigned int irq_nr) struct irq_chip score_irq_chip = { .name = "Score7-level", - .mask = score_mask, - .mask_ack = score_mask, - .unmask = score_unmask, + .irq_mask = score_mask, + .irq_mask_ack = score_mask, + .irq_unmask = score_unmask, }; /* @@ -127,21 +127,23 @@ int show_interrupts(struct seq_file *p, void *v) } if (i < NR_IRQS) { - spin_lock_irqsave(&irq_desc[i].lock, flags); - action = irq_desc[i].action; + struct irq_desc *desc = irq_to_desc(i); + + raw_spin_lock_irqsave(&desc->lock, flags); + action = desc->action; if (!action) goto unlock; seq_printf(p, "%3d: ", i); seq_printf(p, "%10u ", kstat_irqs(i)); - seq_printf(p, " %8s", irq_desc[i].chip->name ? : "-"); + seq_printf(p, " %8s", get_irq_desc_chip(desc)->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(&irq_desc[i].lock, flags); + raw_spin_unlock_irqrestore(&desc->lock, flags); } return 0; From 538202b5cc7d7071bddd2a70656d57b1cbb45d0b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 6 Feb 2011 22:23:50 +0000 Subject: [PATCH 2/5] score: Select GENERIC_HARDIRQS_NO_DEPRECATED All chips converted and proper accessor functions used. Signed-off-by: Thomas Gleixner Acked-by: Chen Liqin --- arch/score/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/score/Kconfig b/arch/score/Kconfig index 27b2295f41f3..b256adbe0c5d 100644 --- a/arch/score/Kconfig +++ b/arch/score/Kconfig @@ -3,6 +3,7 @@ menu "Machine selection" config SCORE def_bool y select HAVE_GENERIC_HARDIRQS + select GENERIC_HARDIRQS_NO_DEPRECATED choice prompt "System type" From fa73c5bffbb2961ca71d88b4d925038458bc2b4c Mon Sep 17 00:00:00 2001 From: Chen Liqin Date: Mon, 28 Mar 2011 12:02:20 +0800 Subject: [PATCH 3/5] score: lost a semicolon in asm/irqflags.h --- arch/score/include/asm/irqflags.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/score/include/asm/irqflags.h b/arch/score/include/asm/irqflags.h index 5c7563891e28..37c6ac9dd6e8 100644 --- a/arch/score/include/asm/irqflags.h +++ b/arch/score/include/asm/irqflags.h @@ -29,7 +29,7 @@ static inline unsigned long arch_local_save_flags(void) static inline unsigned long arch_local_irq_save(void) { - unsigned long flags + unsigned long flags; asm volatile( " mfcr r8, cr0 \n" From 991353510e8ab5e55c5bbd058c7545f29192cddf Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 25 Mar 2011 14:16:55 +0000 Subject: [PATCH 4/5] score: Convert to new irq function names Scripted with coccinelle. Signed-off-by: Thomas Gleixner Acked-by: Chen Liqin --- arch/score/kernel/irq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/score/kernel/irq.c b/arch/score/kernel/irq.c index ee68ec633242..601a56688a1b 100644 --- a/arch/score/kernel/irq.c +++ b/arch/score/kernel/irq.c @@ -92,7 +92,7 @@ void __init init_IRQ(void) unsigned long target_addr; for (index = 0; index < NR_IRQS; ++index) - set_irq_chip_and_handler(index, &score_irq_chip, + irq_set_chip_and_handler(index, &score_irq_chip, handle_level_irq); for (target_addr = IRQ_VECTOR_BASE_ADDR; @@ -136,7 +136,7 @@ int show_interrupts(struct seq_file *p, void *v) seq_printf(p, "%3d: ", i); seq_printf(p, "%10u ", kstat_irqs(i)); - seq_printf(p, " %8s", get_irq_desc_chip(desc)->name ? : "-"); + seq_printf(p, " %8s", irq_desc_get_chip(desc)->name ? : "-"); seq_printf(p, " %s", action->name); for (action = action->next; action; action = action->next) seq_printf(p, ", %s", action->name); From 324808c2bc190e9424200e73faab1045df9b7d2e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 25 Mar 2011 14:16:56 +0000 Subject: [PATCH 5/5] score: Use generic show_interrupts() Signed-off-by: Thomas Gleixner Acked-by: Chen Liqin --- arch/score/Kconfig | 1 + arch/score/kernel/irq.c | 39 --------------------------------------- 2 files changed, 1 insertion(+), 39 deletions(-) diff --git a/arch/score/Kconfig b/arch/score/Kconfig index b256adbe0c5d..4278bbc032ce 100644 --- a/arch/score/Kconfig +++ b/arch/score/Kconfig @@ -4,6 +4,7 @@ config SCORE def_bool y select HAVE_GENERIC_HARDIRQS select GENERIC_HARDIRQS_NO_DEPRECATED + select GENERIC_IRQ_SHOW choice prompt "System type" diff --git a/arch/score/kernel/irq.c b/arch/score/kernel/irq.c index 601a56688a1b..d4196732c65e 100644 --- a/arch/score/kernel/irq.c +++ b/arch/score/kernel/irq.c @@ -109,42 +109,3 @@ void __init init_IRQ(void) : : "r" (EXCEPTION_VECTOR_BASE_ADDR | \ VECTOR_ADDRESS_OFFSET_MODE16)); } - -/* - * Generic, controller-independent functions: - */ -int show_interrupts(struct seq_file *p, void *v) -{ - int i = *(loff_t *)v, cpu; - struct irqaction *action; - unsigned long flags; - - if (i == 0) { - seq_puts(p, " "); - for_each_online_cpu(cpu) - seq_printf(p, "CPU%d ", cpu); - seq_putc(p, '\n'); - } - - if (i < NR_IRQS) { - struct irq_desc *desc = irq_to_desc(i); - - raw_spin_lock_irqsave(&desc->lock, flags); - action = desc->action; - if (!action) - goto unlock; - - seq_printf(p, "%3d: ", i); - seq_printf(p, "%10u ", kstat_irqs(i)); - seq_printf(p, " %8s", irq_desc_get_chip(desc)->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: - raw_spin_unlock_irqrestore(&desc->lock, flags); - } - - return 0; -}