linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [patch 00/11] ARM: Interrupt cleanups and API change preparation
@ 2015-07-13 20:28 Thomas Gleixner
  2015-07-13 20:29 ` [patch 01/11] ARM/orion: Consolidate chained IRQ handler install/remove Thomas Gleixner
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:28 UTC (permalink / raw)
  To: linux-arm-kernel

The following patch series contains the following changes:

    - Consolidation of chained interrupt handler setup/removal

    - Switch to functions which avoid a redundant interrupt
      descriptor lookup

    - Preparation of interrupt flow handlers for the 'irq' argument
      removal

The series has no dependencies and is also available as a git branch
for your convenience:

 git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/arm

If you want me to carry the patches in the irq/core branch of tip,
please let me know.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 01/11] ARM/orion: Consolidate chained IRQ handler install/remove
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 02/11] ARM/locomo: " Thomas Gleixner
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

Chained irq handlers usually set up handler data as well. We now have
a function to set both under irq_desc->lock. Replace the two calls
with one.

Search and conversion was done with coccinelle.

Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
---
 arch/arm/plat-orion/gpio.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Index: tip/arch/arm/plat-orion/gpio.c
===================================================================
--- tip.orig/arch/arm/plat-orion/gpio.c
+++ tip/arch/arm/plat-orion/gpio.c
@@ -582,8 +582,9 @@ void __init orion_gpio_init(struct devic
 
 	for (i = 0; i < 4; i++) {
 		if (irqs[i]) {
-			irq_set_handler_data(irqs[i], ochip);
-			irq_set_chained_handler(irqs[i], gpio_irq_handler);
+			irq_set_chained_handler_and_data(irqs[i],
+							 gpio_irq_handler,
+							 ochip);
 		}
 	}
 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 02/11] ARM/locomo: Consolidate chained IRQ handler install/remove
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
  2015-07-13 20:29 ` [patch 01/11] ARM/orion: Consolidate chained IRQ handler install/remove Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 03/11] ARM/irq: Use access helper irq_data_get_affinity_mask() Thomas Gleixner
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

Chained irq handlers usually set up handler data as well. We now have
a function to set both under irq_desc->lock. Replace the two calls
with one.

Search and conversion was done with coccinelle.

Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
---
 arch/arm/common/locomo.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Index: tip/arch/arm/common/locomo.c
===================================================================
--- tip.orig/arch/arm/common/locomo.c
+++ tip/arch/arm/common/locomo.c
@@ -475,8 +475,7 @@ static void __locomo_remove(struct locom
 	device_for_each_child(lchip->dev, NULL, locomo_remove_child);
 
 	if (lchip->irq != NO_IRQ) {
-		irq_set_chained_handler(lchip->irq, NULL);
-		irq_set_handler_data(lchip->irq, NULL);
+		irq_set_chained_handler_and_data(lchip->irq, NULL, NULL);
 	}
 
 	iounmap(lchip->base);

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 03/11] ARM/irq: Use access helper irq_data_get_affinity_mask()
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
  2015-07-13 20:29 ` [patch 01/11] ARM/orion: Consolidate chained IRQ handler install/remove Thomas Gleixner
  2015-07-13 20:29 ` [patch 02/11] ARM/locomo: " Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 04/11] ARM/LPC32xx: Use irq_set_handler_locked() Thomas Gleixner
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

From: Jiang Liu <jiang.liu@linux.intel.com>

This is a preparatory patch for moving irq_data struct members.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/arm/kernel/irq.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/arch/arm/kernel/irq.c
===================================================================
--- tip.orig/arch/arm/kernel/irq.c
+++ tip/arch/arm/kernel/irq.c
@@ -140,7 +140,7 @@ int __init arch_probe_nr_irqs(void)
 static bool migrate_one_irq(struct irq_desc *desc)
 {
 	struct irq_data *d = irq_desc_get_irq_data(desc);
-	const struct cpumask *affinity = d->affinity;
+	const struct cpumask *affinity = irq_data_get_affinity_mask(d);
 	struct irq_chip *c;
 	bool ret = false;
 
@@ -160,7 +160,7 @@ static bool migrate_one_irq(struct irq_d
 	if (!c->irq_set_affinity)
 		pr_debug("IRQ%u: unable to set affinity\n", d->irq);
 	else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret)
-		cpumask_copy(d->affinity, affinity);
+		cpumask_copy(irq_data_get_affinity_mask(d), affinity);
 
 	return ret;
 }

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 04/11] ARM/LPC32xx: Use irq_set_handler_locked()
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (2 preceding siblings ...)
  2015-07-13 20:29 ` [patch 03/11] ARM/irq: Use access helper irq_data_get_affinity_mask() Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 05/11] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Thomas Gleixner
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
---
 arch/arm/mach-lpc32xx/irq.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: tip/arch/arm/mach-lpc32xx/irq.c
===================================================================
--- tip.orig/arch/arm/mach-lpc32xx/irq.c
+++ tip/arch/arm/mach-lpc32xx/irq.c
@@ -283,25 +283,25 @@ static int lpc32xx_set_irq_type(struct i
 	case IRQ_TYPE_EDGE_RISING:
 		/* Rising edge sensitive */
 		__lpc32xx_set_irq_type(d->hwirq, 1, 1);
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 		break;
 
 	case IRQ_TYPE_EDGE_FALLING:
 		/* Falling edge sensitive */
 		__lpc32xx_set_irq_type(d->hwirq, 0, 1);
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 		break;
 
 	case IRQ_TYPE_LEVEL_LOW:
 		/* Low level sensitive */
 		__lpc32xx_set_irq_type(d->hwirq, 0, 0);
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 		break;
 
 	case IRQ_TYPE_LEVEL_HIGH:
 		/* High level sensitive */
 		__lpc32xx_set_irq_type(d->hwirq, 1, 0);
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 		break;
 
 	/* Other modes are not supported */

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 05/11] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (3 preceding siblings ...)
  2015-07-13 20:29 ` [patch 04/11] ARM/LPC32xx: Use irq_set_handler_locked() Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 06/11] ARM/locomo: Prepare locomo_handler for irq argument removal Thomas Gleixner
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

From: Jiang Liu <jiang.liu@linux.intel.com>

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/arm/common/locomo.c   |    2 +-
 arch/arm/common/sa1111.c   |    2 +-
 arch/arm/plat-orion/gpio.c |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

Index: tip/arch/arm/common/locomo.c
===================================================================
--- tip.orig/arch/arm/common/locomo.c
+++ tip/arch/arm/common/locomo.c
@@ -140,7 +140,7 @@ static struct locomo_dev_info locomo_dev
 
 static void locomo_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct locomo *lchip = irq_get_chip_data(irq);
+	struct locomo *lchip = irq_desc_get_chip_data(desc);
 	int req, i;
 
 	/* Acknowledge the parent IRQ */
Index: tip/arch/arm/common/sa1111.c
===================================================================
--- tip.orig/arch/arm/common/sa1111.c
+++ tip/arch/arm/common/sa1111.c
@@ -200,7 +200,7 @@ static void
 sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	unsigned int stat0, stat1, i;
-	struct sa1111 *sachip = irq_get_handler_data(irq);
+	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
 	void __iomem *mapbase = sachip->base + SA1111_INTC;
 
 	stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0);
Index: tip/arch/arm/plat-orion/gpio.c
===================================================================
--- tip.orig/arch/arm/plat-orion/gpio.c
+++ tip/arch/arm/plat-orion/gpio.c
@@ -409,7 +409,7 @@ static int gpio_irq_set_type(struct irq_
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct orion_gpio_chip *ochip = irq_get_handler_data(irq);
+	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
 	u32 cause, type;
 	int i;
 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 06/11] ARM/locomo: Prepare locomo_handler for irq argument removal
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (4 preceding siblings ...)
  2015-07-13 20:29 ` [patch 05/11] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 07/11] ARM/sa1111: Prepare sa1111_irq_handler " Thomas Gleixner
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
---
 arch/arm/common/locomo.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Index: tip/arch/arm/common/locomo.c
===================================================================
--- tip.orig/arch/arm/common/locomo.c
+++ tip/arch/arm/common/locomo.c
@@ -138,7 +138,7 @@ static struct locomo_dev_info locomo_dev
 	},
 };
 
-static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+static void locomo_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct locomo *lchip = irq_desc_get_chip_data(desc);
 	int req, i;
@@ -150,6 +150,8 @@ static void locomo_handler(unsigned int
 	req = locomo_readl(lchip->base + LOCOMO_ICR) & 0x0f00;
 
 	if (req) {
+		unsigned int irq;
+
 		/* generate the next interrupt(s) */
 		irq = lchip->irq_base;
 		for (i = 0; i <= 3; i++, irq++) {

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 07/11] ARM/sa1111: Prepare sa1111_irq_handler for irq argument removal
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (5 preceding siblings ...)
  2015-07-13 20:29 ` [patch 06/11] ARM/locomo: Prepare locomo_handler for irq argument removal Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 08/11] ARM/dove: Prepare pmu_irq_handler " Thomas Gleixner
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
---
 arch/arm/common/sa1111.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: tip/arch/arm/common/sa1111.c
===================================================================
--- tip.orig/arch/arm/common/sa1111.c
+++ tip/arch/arm/common/sa1111.c
@@ -197,8 +197,9 @@ static struct sa1111_dev_info sa1111_dev
  * will call us again if there are more interrupts to process.
  */
 static void
-sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+sa1111_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int stat0, stat1, i;
 	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
 	void __iomem *mapbase = sachip->base + SA1111_INTC;

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 08/11] ARM/dove: Prepare pmu_irq_handler for irq argument removal
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (6 preceding siblings ...)
  2015-07-13 20:29 ` [patch 07/11] ARM/sa1111: Prepare sa1111_irq_handler " Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 09/11] ARM/pxa: Prepare *_irq_handler " Thomas Gleixner
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org

---
 arch/arm/mach-dove/irq.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: tip/arch/arm/mach-dove/irq.c
===================================================================
--- tip.orig/arch/arm/mach-dove/irq.c
+++ tip/arch/arm/mach-dove/irq.c
@@ -69,8 +69,9 @@ static struct irq_chip pmu_irq_chip = {
 	.irq_ack	= pmu_irq_ack,
 };
 
-static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pmu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
 
 	cause &= readl(PMU_INTERRUPT_MASK);

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 09/11] ARM/pxa: Prepare *_irq_handler for irq argument removal
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (7 preceding siblings ...)
  2015-07-13 20:29 ` [patch 08/11] ARM/dove: Prepare pmu_irq_handler " Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 10/11] ARM/pxa: Prepare balloon3_irq_handler " Thomas Gleixner
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org

---
 arch/arm/mach-pxa/cm-x2xx-pci.c      |    3 ++-
 arch/arm/mach-pxa/lpd270.c           |    3 ++-
 arch/arm/mach-pxa/pcm990-baseboard.c |    3 ++-
 arch/arm/mach-pxa/viper.c            |    3 ++-
 arch/arm/mach-pxa/zeus.c             |    3 ++-
 5 files changed, 10 insertions(+), 5 deletions(-)

Index: tip/arch/arm/mach-pxa/cm-x2xx-pci.c
===================================================================
--- tip.orig/arch/arm/mach-pxa/cm-x2xx-pci.c
+++ tip/arch/arm/mach-pxa/cm-x2xx-pci.c
@@ -29,8 +29,9 @@
 void __iomem *it8152_base_address;
 static int cmx2xx_it8152_irq_gpio;
 
-static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void cmx2xx_it8152_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	/* clear our parent irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
Index: tip/arch/arm/mach-pxa/lpd270.c
===================================================================
--- tip.orig/arch/arm/mach-pxa/lpd270.c
+++ tip/arch/arm/mach-pxa/lpd270.c
@@ -120,8 +120,9 @@ static struct irq_chip lpd270_irq_chip =
 	.irq_unmask	= lpd270_unmask_irq,
 };
 
-static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void lpd270_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq;
 	unsigned long pending;
 
 	pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled;
Index: tip/arch/arm/mach-pxa/pcm990-baseboard.c
===================================================================
--- tip.orig/arch/arm/mach-pxa/pcm990-baseboard.c
+++ tip/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -284,8 +284,9 @@ static struct irq_chip pcm990_irq_chip =
 	.irq_unmask	= pcm990_unmask_irq,
 };
 
-static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcm990_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq;
 	unsigned long pending;
 
 	pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
Index: tip/arch/arm/mach-pxa/viper.c
===================================================================
--- tip.orig/arch/arm/mach-pxa/viper.c
+++ tip/arch/arm/mach-pxa/viper.c
@@ -276,8 +276,9 @@ static inline unsigned long viper_irq_pe
 			viper_irq_enabled_mask;
 }
 
-static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void viper_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq;
 	unsigned long pending;
 
 	pending = viper_irq_pending();
Index: tip/arch/arm/mach-pxa/zeus.c
===================================================================
--- tip.orig/arch/arm/mach-pxa/zeus.c
+++ tip/arch/arm/mach-pxa/zeus.c
@@ -105,8 +105,9 @@ static inline unsigned long zeus_irq_pen
 	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
 }
 
-static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void zeus_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq;
 	unsigned long pending;
 
 	pending = zeus_irq_pending();

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 10/11] ARM/pxa: Prepare balloon3_irq_handler for irq argument removal
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (8 preceding siblings ...)
  2015-07-13 20:29 ` [patch 09/11] ARM/pxa: Prepare *_irq_handler " Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-07-13 20:29 ` [patch 11/11] ARM/orion/gpio: Prepare gpio_irq_handler " Thomas Gleixner
  2015-08-05 15:26 ` [patch 00/11] ARM: Interrupt cleanups and API change preparation Olof Johansson
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

While at it fix the pointless lookup of irq_data with the proper
methods to retrieve the same information from the irq descriptor.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org
---
 arch/arm/mach-pxa/balloon3.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

Index: tip/arch/arm/mach-pxa/balloon3.c
===================================================================
--- tip.orig/arch/arm/mach-pxa/balloon3.c
+++ tip/arch/arm/mach-pxa/balloon3.c
@@ -496,18 +496,18 @@ static struct irq_chip balloon3_irq_chip
 	.irq_unmask	= balloon3_unmask_irq,
 };
 
-static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void balloon3_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
 					balloon3_irq_enabled;
 	do {
-		/* clear useless edge notification */
-		if (desc->irq_data.chip->irq_ack) {
-			struct irq_data *d;
+		struct irq_data *d = irq_desc_get_irq_data(desc);
+		struct irq_chip *chip = irq_data_get_chip(d);
+		unsigned int irq;
 
-			d = irq_get_irq_data(BALLOON3_AUX_NIRQ);
-			desc->irq_data.chip->irq_ack(d);
-		}
+		/* clear useless edge notification */
+		if (chip->irq_ack)
+			chip->irq_ack(d);
 
 		while (pending) {
 			irq = BALLOON3_IRQ(0) + __ffs(pending);

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 11/11] ARM/orion/gpio: Prepare gpio_irq_handler for irq argument removal
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (9 preceding siblings ...)
  2015-07-13 20:29 ` [patch 10/11] ARM/pxa: Prepare balloon3_irq_handler " Thomas Gleixner
@ 2015-07-13 20:29 ` Thomas Gleixner
  2015-08-05 15:26 ` [patch 00/11] ARM: Interrupt cleanups and API change preparation Olof Johansson
  11 siblings, 0 replies; 13+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:29 UTC (permalink / raw)
  To: linux-arm-kernel

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

In this case the irq argument is shadowed by a local variable already,
so just rename it.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: linux-arm-kernel at lists.infradead.org

---
 arch/arm/plat-orion/gpio.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: tip/arch/arm/plat-orion/gpio.c
===================================================================
--- tip.orig/arch/arm/plat-orion/gpio.c
+++ tip/arch/arm/plat-orion/gpio.c
@@ -407,7 +407,7 @@ static int gpio_irq_set_type(struct irq_
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
 	u32 cause, type;

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 00/11] ARM: Interrupt cleanups and API change preparation
  2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (10 preceding siblings ...)
  2015-07-13 20:29 ` [patch 11/11] ARM/orion/gpio: Prepare gpio_irq_handler " Thomas Gleixner
@ 2015-08-05 15:26 ` Olof Johansson
  11 siblings, 0 replies; 13+ messages in thread
From: Olof Johansson @ 2015-08-05 15:26 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jul 13, 2015 at 08:28:58PM -0000, Thomas Gleixner wrote:
> The following patch series contains the following changes:
> 
>     - Consolidation of chained interrupt handler setup/removal
> 
>     - Switch to functions which avoid a redundant interrupt
>       descriptor lookup
> 
>     - Preparation of interrupt flow handlers for the 'irq' argument
>       removal
> 
> The series has no dependencies and is also available as a git branch
> for your convenience:
> 
>  git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/arm
> 
> If you want me to carry the patches in the irq/core branch of tip,
> please let me know.

I've now merged this into next/cleanup in arm-soc (for 4.3).

Thanks!


-Olof

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2015-08-05 15:26 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-13 20:28 [patch 00/11] ARM: Interrupt cleanups and API change preparation Thomas Gleixner
2015-07-13 20:29 ` [patch 01/11] ARM/orion: Consolidate chained IRQ handler install/remove Thomas Gleixner
2015-07-13 20:29 ` [patch 02/11] ARM/locomo: " Thomas Gleixner
2015-07-13 20:29 ` [patch 03/11] ARM/irq: Use access helper irq_data_get_affinity_mask() Thomas Gleixner
2015-07-13 20:29 ` [patch 04/11] ARM/LPC32xx: Use irq_set_handler_locked() Thomas Gleixner
2015-07-13 20:29 ` [patch 05/11] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Thomas Gleixner
2015-07-13 20:29 ` [patch 06/11] ARM/locomo: Prepare locomo_handler for irq argument removal Thomas Gleixner
2015-07-13 20:29 ` [patch 07/11] ARM/sa1111: Prepare sa1111_irq_handler " Thomas Gleixner
2015-07-13 20:29 ` [patch 08/11] ARM/dove: Prepare pmu_irq_handler " Thomas Gleixner
2015-07-13 20:29 ` [patch 09/11] ARM/pxa: Prepare *_irq_handler " Thomas Gleixner
2015-07-13 20:29 ` [patch 10/11] ARM/pxa: Prepare balloon3_irq_handler " Thomas Gleixner
2015-07-13 20:29 ` [patch 11/11] ARM/orion/gpio: Prepare gpio_irq_handler " Thomas Gleixner
2015-08-05 15:26 ` [patch 00/11] ARM: Interrupt cleanups and API change preparation Olof Johansson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).