linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
@ 2014-08-26 10:03 Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler Marc Zyngier
                   ` (27 more replies)
  0 siblings, 28 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

A number of irqchip drivers are directly calling irq_find_mapping,
which may use a rcu_read_lock call when walking the radix tree.

Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
the kernel will shout at you, as using RCU in this context may be
illegal (specially if coming from the idle state, where RCU would be
in a quiescent state).

A possible fix would be to wrap calls to irq_find_mapping into a
RCU_NONIDLE macro, but that really looks ugly.

This patch series introduce another generic IRQ entry point
(handle_domain_irq), which has the exact same behaviour as handle_IRQ
(as defined on arm, arm64 and openrisc), except that it also takes a
irq_domain pointer. This allows the logical IRQ lookup to be done
inside the irq_{enter,exit} section, which contains a
rcu_irq_{enter,exit}, making it safe.

A number of irqchips are then converted to this new entry point. I've
converted all the direct users of irq_find_mapping, except for the
cases where it was used as a chained handler (chained_irq_{enter,exit}
makes it safe). Users of irq_linear_revmap are safe as well. I've
given it some light testing on arm64.

The series is also available in my tree:

git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git handle_domain_irq

>From v1 [1]:
- Made handle_domain_irq a generic function
- Added OpenRISC to the list of affected architectures
- Converted more interrupt controllers
- Rebased on v3.17-rc1

[1]: https://lkml.org/lkml/2014/7/8/381

Marc Zyngier (26):
  genirq: add irq_domain-aware core IRQ handler
  arm64: convert handle_IRQ to use __handle_domain_irq
  ARM: convert handle_IRQ to use __handle_domain_irq
  openrisc: convert handle_IRQ to use __handle_domain_irq
  irqchip: GIC: convert to handle_domain_irq
  irqchip: armada-370-xp: convert to handle_domain_irq
  irqchip: clps711x: convert to handle_domain_irq
  irqchip: mmp: convert to handle_domain_irq
  irqchip: mxs: convert to handle_domain_irq
  irqchip: orion: convert to handle_domain_irq
  irqchip: s3c24xx: convert to handle_domain_irq
  irqchip: sirfsoc: convert to handle_domain_irq
  irqchip: sun4i: convert to handle_domain_irq
  irqchip: versatile-fpga: convert to handle_domain_irq
  irqchip: vic: convert to handle_domain_irq
  irqchip: vt8500: convert to handle_domain_irq
  irqchip: zevio: convert to handle_domain_irq
  irqchip: GICv3: convert to handle_domain_irq
  irqchip: atmel-aic: convert to handle_domain_irq
  irqchip: atmel-aic5: convert to handle_domain_irq
  irqchip: or1k-pic: convert to handle_domain_irq
  ARM: imx: avic: convert to handle_domain_irq
  ARM: imx: tzic: convert to handle_domain_irq
  ARM: omap2: irq: convert to handle_domain_irq
  arm64: get rid of handle_IRQ
  openrisc: get rid of handle_IRQ

 arch/arm/Kconfig                     |  1 +
 arch/arm/kernel/irq.c                | 19 +---------------
 arch/arm/mach-imx/avic.c             |  2 +-
 arch/arm/mach-imx/tzic.c             |  3 +--
 arch/arm/mach-omap2/irq.c            |  3 +--
 arch/arm64/Kconfig                   |  1 +
 arch/arm64/include/asm/hardirq.h     |  2 --
 arch/arm64/kernel/irq.c              | 27 -----------------------
 arch/openrisc/Kconfig                |  1 +
 arch/openrisc/include/asm/irq.h      |  1 -
 arch/openrisc/kernel/irq.c           | 12 -----------
 drivers/irqchip/irq-armada-370-xp.c  | 19 ++++++++--------
 drivers/irqchip/irq-atmel-aic.c      |  4 +---
 drivers/irqchip/irq-atmel-aic5.c     |  4 +---
 drivers/irqchip/irq-clps711x.c       | 18 ++++++----------
 drivers/irqchip/irq-gic-v3.c         | 13 ++++++-----
 drivers/irqchip/irq-gic.c            |  3 +--
 drivers/irqchip/irq-mmp.c            | 10 ++++-----
 drivers/irqchip/irq-mxs.c            |  3 +--
 drivers/irqchip/irq-or1k-pic.c       |  4 ++--
 drivers/irqchip/irq-orion.c          |  5 ++---
 drivers/irqchip/irq-s3c24xx.c        |  4 +---
 drivers/irqchip/irq-sirfsoc.c        |  6 ++----
 drivers/irqchip/irq-sun4i.c          |  5 ++---
 drivers/irqchip/irq-versatile-fpga.c |  2 +-
 drivers/irqchip/irq-vic.c            |  2 +-
 drivers/irqchip/irq-vt8500.c         |  5 ++---
 drivers/irqchip/irq-zevio.c          |  3 +--
 include/linux/irqdesc.h              | 19 ++++++++++++++++
 kernel/irq/Kconfig                   |  3 +++
 kernel/irq/irqdesc.c                 | 42 ++++++++++++++++++++++++++++++++++++
 31 files changed, 116 insertions(+), 130 deletions(-)

-- 
2.0.4


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

* [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 17:42   ` Stephen Boyd
  2014-08-26 10:03 ` [PATCH v2 02/26] arm64: convert handle_IRQ to use __handle_domain_irq Marc Zyngier
                   ` (26 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky, Vladimir Murzin

Calling irq_find_mapping from outside a irq_{enter,exit} section is
unsafe and produces ugly messages if CONFIG_PROVE_RCU is enabled:
If coming from the idle state, the rcu_read_lock call in irq_find_mapping
will generate an unpleasant warning:

<quote>
===============================
[ INFO: suspicious RCU usage. ]
3.16.0-rc1+ #135 Not tainted
-------------------------------
include/linux/rcupdate.h:871 rcu_read_lock() used illegally while idle!

other info that might help us debug this:

RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
1 lock held by swapper/0/0:
 #0:  (rcu_read_lock){......}, at: [<ffffffc00010206c>]
irq_find_mapping+0x4c/0x198
</quote>

As this issue is fairly widespread and involves at least three
different architectures, a possible solution is to add a new
handle_domain_irq entry point into the generic IRQ code that
the interrupt controller code can call.

This new function takes an irq_domain, and calls into irq_find_domain
inside the irq_{enter,exit} block. An additional "lookup" parameter is
used to allow non-domain architecture code to be replaced by this as well.

Interrupt controllers can then be updated to use the new mechanism.

This code is sitting behind a new CONFIG_HANDLE_DOMAIN_IRQ, as not all
architectures implement set_irq_regs (yes, mn10300, I'm looking at you...).

Reported-by: Vladimir Murzin <vladimir.murzin@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 include/linux/irqdesc.h | 19 +++++++++++++++++++
 kernel/irq/Kconfig      |  3 +++
 kernel/irq/irqdesc.c    | 42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+)

diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 472c021..ff24667 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -12,6 +12,8 @@ struct irq_affinity_notify;
 struct proc_dir_entry;
 struct module;
 struct irq_desc;
+struct irq_domain;
+struct pt_regs;
 
 /**
  * struct irq_desc - interrupt descriptor
@@ -118,6 +120,23 @@ static inline void generic_handle_irq_desc(unsigned int irq, struct irq_desc *de
 
 int generic_handle_irq(unsigned int irq);
 
+#ifdef CONFIG_HANDLE_DOMAIN_IRQ
+/*
+ * Convert a HW interrupt number to a logical one using a IRQ domain,
+ * and handle the result interrupt number. Return -EINVAL if
+ * conversion failed. Providing a NULL domain indicates that the
+ * conversion has already been done.
+ */
+int __handle_domain_irq(struct irq_domain *domain, unsigned int hwirq,
+			bool lookup, struct pt_regs *regs);
+
+static inline int handle_domain_irq(struct irq_domain *domain,
+				    unsigned int hwirq, struct pt_regs *regs)
+{
+	return __handle_domain_irq(domain, hwirq, true, regs);
+}
+#endif
+
 /* Test to see if a driver has successfully requested an irq */
 static inline int irq_has_action(unsigned int irq)
 {
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index d269cec..225086b 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -55,6 +55,9 @@ config GENERIC_IRQ_CHIP
 config IRQ_DOMAIN
 	bool
 
+config HANDLE_DOMAIN_IRQ
+	bool
+
 config IRQ_DOMAIN_DEBUG
 	bool "Expose hardware/virtual IRQ mapping via debugfs"
 	depends on IRQ_DOMAIN && DEBUG_FS
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index 1487a12..a1782f8 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -14,6 +14,7 @@
 #include <linux/kernel_stat.h>
 #include <linux/radix-tree.h>
 #include <linux/bitmap.h>
+#include <linux/irqdomain.h>
 
 #include "internals.h"
 
@@ -336,6 +337,47 @@ int generic_handle_irq(unsigned int irq)
 }
 EXPORT_SYMBOL_GPL(generic_handle_irq);
 
+#ifdef CONFIG_HANDLE_DOMAIN_IRQ
+/**
+ * __handle_domain_irq - Invoke the handler for a HW irq belonging to a domain
+ * @domain:	The domain where to perform the lookup
+ * @hwirq:	The HW irq number to convert to a logical one
+ * @lookup:	Whether to perform the domain lookup or not
+ * @regs:	Register file coming from the low-level handling code
+ *
+ * Returns:	0 on success, or -EINVAL if conversion has failed
+ */
+int __handle_domain_irq(struct irq_domain *domain, unsigned int hwirq,
+			bool lookup, struct pt_regs *regs)
+{
+	struct pt_regs *old_regs = set_irq_regs(regs);
+	unsigned int irq = hwirq;
+	int ret = 0;
+
+	irq_enter();
+
+#ifdef CONFIG_IRQ_DOMAIN
+	if (lookup)
+		irq = irq_find_mapping(domain, hwirq);
+#endif
+
+	/*
+	 * Some hardware gives randomly wrong interrupts.  Rather
+	 * than crashing, do something sensible.
+	 */
+	if (unlikely(!irq || irq >= nr_irqs)) {
+		ack_bad_irq(irq);
+		ret = -EINVAL;
+	} else {
+		generic_handle_irq(irq);
+	}
+
+	irq_exit();
+	set_irq_regs(old_regs);
+	return ret;
+}
+#endif
+
 /* Dynamic interrupt handling */
 
 /**
-- 
2.0.4


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

* [PATCH v2 02/26] arm64: convert handle_IRQ to use __handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 16:51   ` Catalin Marinas
  2014-08-26 10:03 ` [PATCH v2 03/26] ARM: " Marc Zyngier
                   ` (25 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

In order to limit code duplication, convert the architecture specific
handle_IRQ to use the generic __handle_domain_irq function.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm64/Kconfig      |  1 +
 arch/arm64/kernel/irq.c | 18 +-----------------
 2 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index fd4e81a..1f16ed9 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -30,6 +30,7 @@ config ARM64
 	select GENERIC_STRNCPY_FROM_USER
 	select GENERIC_STRNLEN_USER
 	select GENERIC_TIME_VSYSCALL
+	select HANDLE_DOMAIN_IRQ
 	select HARDIRQS_SW_RESEND
 	select HAVE_ARCH_AUDITSYSCALL
 	select HAVE_ARCH_JUMP_LABEL
diff --git a/arch/arm64/kernel/irq.c b/arch/arm64/kernel/irq.c
index 0f08dfd..2c0e2a7 100644
--- a/arch/arm64/kernel/irq.c
+++ b/arch/arm64/kernel/irq.c
@@ -48,23 +48,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
  */
 void handle_IRQ(unsigned int irq, struct pt_regs *regs)
 {
-	struct pt_regs *old_regs = set_irq_regs(regs);
-
-	irq_enter();
-
-	/*
-	 * Some hardware gives randomly wrong interrupts.  Rather
-	 * than crashing, do something sensible.
-	 */
-	if (unlikely(irq >= nr_irqs)) {
-		pr_warn_ratelimited("Bad IRQ%u\n", irq);
-		ack_bad_irq(irq);
-	} else {
-		generic_handle_irq(irq);
-	}
-
-	irq_exit();
-	set_irq_regs(old_regs);
+	__handle_domain_irq(NULL, irq, false, regs);
 }
 
 void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
-- 
2.0.4


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

* [PATCH v2 03/26] ARM: convert handle_IRQ to use __handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 02/26] arm64: convert handle_IRQ to use __handle_domain_irq Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 04/26] openrisc: " Marc Zyngier
                   ` (24 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

In order to limit code duplication, convert the architecture specific
handle_IRQ to use the generic __handle_domain_irq function.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm/Kconfig      |  1 +
 arch/arm/kernel/irq.c | 19 +------------------
 2 files changed, 2 insertions(+), 18 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index c49a775..5918d40 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -24,6 +24,7 @@ config ARM
 	select GENERIC_SMP_IDLE_THREAD
 	select GENERIC_STRNCPY_FROM_USER
 	select GENERIC_STRNLEN_USER
+	select HANDLE_DOMAIN_IRQ
 	select HARDIRQS_SW_RESEND
 	select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT)
 	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 2c42576..0509d07 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -65,24 +65,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
  */
 void handle_IRQ(unsigned int irq, struct pt_regs *regs)
 {
-	struct pt_regs *old_regs = set_irq_regs(regs);
-
-	irq_enter();
-
-	/*
-	 * Some hardware gives randomly wrong interrupts.  Rather
-	 * than crashing, do something sensible.
-	 */
-	if (unlikely(irq >= nr_irqs)) {
-		if (printk_ratelimit())
-			printk(KERN_WARNING "Bad IRQ%u\n", irq);
-		ack_bad_irq(irq);
-	} else {
-		generic_handle_irq(irq);
-	}
-
-	irq_exit();
-	set_irq_regs(old_regs);
+	__handle_domain_irq(NULL, irq, false, regs);
 }
 
 /*
-- 
2.0.4


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

* [PATCH v2 04/26] openrisc: convert handle_IRQ to use __handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (2 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 03/26] ARM: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 05/26] irqchip: GIC: convert to handle_domain_irq Marc Zyngier
                   ` (23 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

In order to limit code duplication, convert the architecture specific
handle_IRQ to use the generic __handle_domain_irq function.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/openrisc/Kconfig      | 1 +
 arch/openrisc/kernel/irq.c | 9 +--------
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
index 88e8336..e5a693b 100644
--- a/arch/openrisc/Kconfig
+++ b/arch/openrisc/Kconfig
@@ -8,6 +8,7 @@ config OPENRISC
 	select OF
 	select OF_EARLY_FLATTREE
 	select IRQ_DOMAIN
+	select HANDLE_DOMAIN_IRQ
 	select HAVE_MEMBLOCK
 	select ARCH_REQUIRE_GPIOLIB
         select HAVE_ARCH_TRACEHOOK
diff --git a/arch/openrisc/kernel/irq.c b/arch/openrisc/kernel/irq.c
index 967eb14..e9aaf28 100644
--- a/arch/openrisc/kernel/irq.c
+++ b/arch/openrisc/kernel/irq.c
@@ -50,14 +50,7 @@ void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
 
 void handle_IRQ(unsigned int irq, struct pt_regs *regs)
 {
-	struct pt_regs *old_regs = set_irq_regs(regs);
-
-	irq_enter();
-
-	generic_handle_irq(irq);
-
-	irq_exit();
-	set_irq_regs(old_regs);
+	__handle_domain_irq(NULL, irq, false, regs);
 }
 
 void __irq_entry do_IRQ(struct pt_regs *regs)
-- 
2.0.4


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

* [PATCH v2 05/26] irqchip: GIC: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (3 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 04/26] openrisc: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 06/26] irqchip: armada-370-xp: " Marc Zyngier
                   ` (22 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-gic.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 4b959e6..480bae8 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -270,8 +270,7 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 		irqnr = irqstat & GICC_IAR_INT_ID_MASK;
 
 		if (likely(irqnr > 15 && irqnr < 1021)) {
-			irqnr = irq_find_mapping(gic->domain, irqnr);
-			handle_IRQ(irqnr, regs);
+			handle_domain_irq(gic->domain, irqnr, regs);
 			continue;
 		}
 		if (irqnr < 16) {
-- 
2.0.4


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

* [PATCH v2 06/26] irqchip: armada-370-xp: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (4 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 05/26] irqchip: GIC: convert to handle_domain_irq Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 07/26] irqchip: clps711x: " Marc Zyngier
                   ` (21 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-armada-370-xp.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c
index 574aba0..fa75a29 100644
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -393,13 +393,15 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *regs, bool is_chained)
 		if (!(msimask & BIT(msinr)))
 			continue;
 
-		irq = irq_find_mapping(armada_370_xp_msi_domain,
-				       msinr - 16);
-
-		if (is_chained)
+		if (is_chained) {
+			irq = irq_find_mapping(armada_370_xp_msi_domain,
+					       msinr - 16);
 			generic_handle_irq(irq);
-		else
-			handle_IRQ(irq, regs);
+		} else {
+			irq = msinr - 16;
+			handle_domain_irq(armada_370_xp_msi_domain,
+					  irq, regs);
+		}
 	}
 }
 #else
@@ -444,9 +446,8 @@ armada_370_xp_handle_irq(struct pt_regs *regs)
 			break;
 
 		if (irqnr > 1) {
-			irqnr =	irq_find_mapping(armada_370_xp_mpic_domain,
-					irqnr);
-			handle_IRQ(irqnr, regs);
+			handle_domain_irq(armada_370_xp_mpic_domain,
+					  irqnr, regs);
 			continue;
 		}
 
-- 
2.0.4


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

* [PATCH v2 07/26] irqchip: clps711x: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (5 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 06/26] irqchip: armada-370-xp: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 08/26] irqchip: mmp: " Marc Zyngier
                   ` (20 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-clps711x.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/drivers/irqchip/irq-clps711x.c b/drivers/irqchip/irq-clps711x.c
index 33340dc..33127f1 100644
--- a/drivers/irqchip/irq-clps711x.c
+++ b/drivers/irqchip/irq-clps711x.c
@@ -76,24 +76,20 @@ static struct {
 
 static asmlinkage void __exception_irq_entry clps711x_irqh(struct pt_regs *regs)
 {
-	u32 irqnr, irqstat;
+	u32 irqstat;
 
 	do {
 		irqstat = readw_relaxed(clps711x_intc->intmr[0]) &
 			  readw_relaxed(clps711x_intc->intsr[0]);
-		if (irqstat) {
-			irqnr =	irq_find_mapping(clps711x_intc->domain,
-						 fls(irqstat) - 1);
-			handle_IRQ(irqnr, regs);
-		}
+		if (irqstat)
+			handle_domain_irq(clps711x_intc->domain,
+					  fls(irqstat) - 1, regs);
 
 		irqstat = readw_relaxed(clps711x_intc->intmr[1]) &
 			  readw_relaxed(clps711x_intc->intsr[1]);
-		if (irqstat) {
-			irqnr =	irq_find_mapping(clps711x_intc->domain,
-						 fls(irqstat) - 1 + 16);
-			handle_IRQ(irqnr, regs);
-		}
+		if (irqstat)
+			handle_domain_irq(clps711x_intc->domain,
+					  fls(irqstat) - 1 + 16, regs);
 	} while (irqstat);
 }
 
-- 
2.0.4


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

* [PATCH v2 08/26] irqchip: mmp: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (6 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 07/26] irqchip: clps711x: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 09/26] irqchip: mxs: " Marc Zyngier
                   ` (19 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-mmp.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/irqchip/irq-mmp.c b/drivers/irqchip/irq-mmp.c
index 1c3e2c9..c0da57b 100644
--- a/drivers/irqchip/irq-mmp.c
+++ b/drivers/irqchip/irq-mmp.c
@@ -196,26 +196,24 @@ static struct mmp_intc_conf mmp2_conf = {
 
 static void __exception_irq_entry mmp_handle_irq(struct pt_regs *regs)
 {
-	int irq, hwirq;
+	int hwirq;
 
 	hwirq = readl_relaxed(mmp_icu_base + PJ1_INT_SEL);
 	if (!(hwirq & SEL_INT_PENDING))
 		return;
 	hwirq &= SEL_INT_NUM_MASK;
-	irq = irq_find_mapping(icu_data[0].domain, hwirq);
-	handle_IRQ(irq, regs);
+	handle_domain_irq(icu_data[0].domain, hwirq, regs);
 }
 
 static void __exception_irq_entry mmp2_handle_irq(struct pt_regs *regs)
 {
-	int irq, hwirq;
+	int hwirq;
 
 	hwirq = readl_relaxed(mmp_icu_base + PJ4_INT_SEL);
 	if (!(hwirq & SEL_INT_PENDING))
 		return;
 	hwirq &= SEL_INT_NUM_MASK;
-	irq = irq_find_mapping(icu_data[0].domain, hwirq);
-	handle_IRQ(irq, regs);
+	handle_domain_irq(icu_data[0].domain, hwirq, regs);
 }
 
 /* MMP (ARMv5) */
-- 
2.0.4


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

* [PATCH v2 09/26] irqchip: mxs: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (7 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 08/26] irqchip: mmp: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-27  6:38   ` Shawn Guo
  2014-08-26 10:03 ` [PATCH v2 10/26] irqchip: orion: " Marc Zyngier
                   ` (18 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-mxs.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/irqchip/irq-mxs.c b/drivers/irqchip/irq-mxs.c
index 4044ff2..e4acf1e 100644
--- a/drivers/irqchip/irq-mxs.c
+++ b/drivers/irqchip/irq-mxs.c
@@ -78,8 +78,7 @@ asmlinkage void __exception_irq_entry icoll_handle_irq(struct pt_regs *regs)
 
 	irqnr = __raw_readl(icoll_base + HW_ICOLL_STAT_OFFSET);
 	__raw_writel(irqnr, icoll_base + HW_ICOLL_VECTOR);
-	irqnr = irq_find_mapping(icoll_domain, irqnr);
-	handle_IRQ(irqnr, regs);
+	handle_domain_irq(icoll_domain, irqnr, regs);
 }
 
 static int icoll_irq_domain_map(struct irq_domain *d, unsigned int virq,
-- 
2.0.4


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

* [PATCH v2 10/26] irqchip: orion: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (8 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 09/26] irqchip: mxs: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 11/26] irqchip: s3c24xx: " Marc Zyngier
                   ` (17 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-orion.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c
index 34d18b4..ad0c0f6 100644
--- a/drivers/irqchip/irq-orion.c
+++ b/drivers/irqchip/irq-orion.c
@@ -43,9 +43,8 @@ __exception_irq_entry orion_handle_irq(struct pt_regs *regs)
 			gc->mask_cache;
 		while (stat) {
 			u32 hwirq = __fls(stat);
-			u32 irq = irq_find_mapping(orion_irq_domain,
-						   gc->irq_base + hwirq);
-			handle_IRQ(irq, regs);
+			handle_domain_irq(orion_irq_domain,
+					  gc->irq_base + hwirq, regs);
 			stat &= ~(1 << hwirq);
 		}
 	}
-- 
2.0.4


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

* [PATCH v2 11/26] irqchip: s3c24xx: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (9 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 10/26] irqchip: orion: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 12/26] irqchip: sirfsoc: " Marc Zyngier
                   ` (16 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-s3c24xx.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-s3c24xx.c b/drivers/irqchip/irq-s3c24xx.c
index 78a6acc..c8d373f 100644
--- a/drivers/irqchip/irq-s3c24xx.c
+++ b/drivers/irqchip/irq-s3c24xx.c
@@ -339,7 +339,6 @@ static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc,
 {
 	int pnd;
 	int offset;
-	int irq;
 
 	pnd = __raw_readl(intc->reg_intpnd);
 	if (!pnd)
@@ -365,8 +364,7 @@ static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc,
 	if (!(pnd & (1 << offset)))
 		offset =  __ffs(pnd);
 
-	irq = irq_find_mapping(intc->domain, intc_offset + offset);
-	handle_IRQ(irq, regs);
+	handle_domain_irq(intc->domain, intc_offset + offset, regs);
 	return true;
 }
 
-- 
2.0.4


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

* [PATCH v2 12/26] irqchip: sirfsoc: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (10 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 11/26] irqchip: s3c24xx: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 13/26] irqchip: sun4i: " Marc Zyngier
                   ` (15 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-sirfsoc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/irqchip/irq-sirfsoc.c b/drivers/irqchip/irq-sirfsoc.c
index 5e54f6d..a469355 100644
--- a/drivers/irqchip/irq-sirfsoc.c
+++ b/drivers/irqchip/irq-sirfsoc.c
@@ -50,12 +50,10 @@ sirfsoc_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num)
 static void __exception_irq_entry sirfsoc_handle_irq(struct pt_regs *regs)
 {
 	void __iomem *base = sirfsoc_irqdomain->host_data;
-	u32 irqstat, irqnr;
+	u32 irqstat;
 
 	irqstat = readl_relaxed(base + SIRFSOC_INIT_IRQ_ID);
-	irqnr = irq_find_mapping(sirfsoc_irqdomain, irqstat & 0xff);
-
-	handle_IRQ(irqnr, regs);
+	handle_domain_irq(sirfsoc_irqdomain, irqstat & 0xff, regs);
 }
 
 static int __init sirfsoc_irq_init(struct device_node *np,
-- 
2.0.4


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

* [PATCH v2 13/26] irqchip: sun4i: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (11 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 12/26] irqchip: sirfsoc: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 14/26] irqchip: versatile-fpga: " Marc Zyngier
                   ` (14 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-sun4i.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-sun4i.c b/drivers/irqchip/irq-sun4i.c
index 6fcef4a..64155b6 100644
--- a/drivers/irqchip/irq-sun4i.c
+++ b/drivers/irqchip/irq-sun4i.c
@@ -136,7 +136,7 @@ IRQCHIP_DECLARE(allwinner_sun4i_ic, "allwinner,sun4i-a10-ic", sun4i_of_init);
 
 static void __exception_irq_entry sun4i_handle_irq(struct pt_regs *regs)
 {
-	u32 irq, hwirq;
+	u32 hwirq;
 
 	/*
 	 * hwirq == 0 can mean one of 3 things:
@@ -154,8 +154,7 @@ static void __exception_irq_entry sun4i_handle_irq(struct pt_regs *regs)
 		return;
 
 	do {
-		irq = irq_find_mapping(sun4i_irq_domain, hwirq);
-		handle_IRQ(irq, regs);
+		handle_domain_irq(sun4i_irq_domain, hwirq, regs);
 		hwirq = readl(sun4i_irq_base + SUN4I_IRQ_VECTOR_REG) >> 2;
 	} while (hwirq != 0);
 }
-- 
2.0.4


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

* [PATCH v2 14/26] irqchip: versatile-fpga: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (12 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 13/26] irqchip: sun4i: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 15/26] irqchip: vic: " Marc Zyngier
                   ` (13 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-versatile-fpga.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index ccf5854..1ab4517 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -96,7 +96,7 @@ static int handle_one_fpga(struct fpga_irq_data *f, struct pt_regs *regs)
 
 	while ((status  = readl(f->base + IRQ_STATUS))) {
 		irq = ffs(status) - 1;
-		handle_IRQ(irq_find_mapping(f->domain, irq), regs);
+		handle_domain_irq(f->domain, irq, regs);
 		handled = 1;
 	}
 
-- 
2.0.4


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

* [PATCH v2 15/26] irqchip: vic: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (13 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 14/26] irqchip: versatile-fpga: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 16/26] irqchip: vt8500: " Marc Zyngier
                   ` (12 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-vic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-vic.c b/drivers/irqchip/irq-vic.c
index 7d35287..54089de 100644
--- a/drivers/irqchip/irq-vic.c
+++ b/drivers/irqchip/irq-vic.c
@@ -219,7 +219,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
 
 	while ((stat = readl_relaxed(vic->base + VIC_IRQ_STATUS))) {
 		irq = ffs(stat) - 1;
-		handle_IRQ(irq_find_mapping(vic->domain, irq), regs);
+		handle_domain_irq(vic->domain, irq, regs);
 		handled = 1;
 	}
 
-- 
2.0.4


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

* [PATCH v2 16/26] irqchip: vt8500: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (14 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 15/26] irqchip: vic: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 17/26] irqchip: zevio: " Marc Zyngier
                   ` (11 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-vt8500.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-vt8500.c b/drivers/irqchip/irq-vt8500.c
index eb6e91e..b7af816 100644
--- a/drivers/irqchip/irq-vt8500.c
+++ b/drivers/irqchip/irq-vt8500.c
@@ -181,7 +181,7 @@ static struct irq_domain_ops vt8500_irq_domain_ops = {
 static void __exception_irq_entry vt8500_handle_irq(struct pt_regs *regs)
 {
 	u32 stat, i;
-	int irqnr, virq;
+	int irqnr;
 	void __iomem *base;
 
 	/* Loop through each active controller */
@@ -198,8 +198,7 @@ static void __exception_irq_entry vt8500_handle_irq(struct pt_regs *regs)
 				continue;
 		}
 
-		virq = irq_find_mapping(intc[i].domain, irqnr);
-		handle_IRQ(virq, regs);
+		handle_domain_irq(intc[i].domain, irqnr, regs);
 	}
 }
 
-- 
2.0.4


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

* [PATCH v2 17/26] irqchip: zevio: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (15 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 16/26] irqchip: vt8500: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 18/26] irqchip: GICv3: " Marc Zyngier
                   ` (10 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-zevio.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/irqchip/irq-zevio.c b/drivers/irqchip/irq-zevio.c
index ceb3a43..e4ef74e 100644
--- a/drivers/irqchip/irq-zevio.c
+++ b/drivers/irqchip/irq-zevio.c
@@ -56,8 +56,7 @@ static void __exception_irq_entry zevio_handle_irq(struct pt_regs *regs)
 
 	while (readl(zevio_irq_io + IO_STATUS)) {
 		irqnr = readl(zevio_irq_io + IO_CURRENT);
-		irqnr = irq_find_mapping(zevio_irq_domain, irqnr);
-		handle_IRQ(irqnr, regs);
+		handle_domain_irq(zevio_irq_domain, irqnr, regs);
 	};
 }
 
-- 
2.0.4


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

* [PATCH v2 18/26] irqchip: GICv3: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (16 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 17/26] irqchip: zevio: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 10:03 ` [PATCH v2 19/26] irqchip: atmel-aic: " Marc Zyngier
                   ` (9 subsequent siblings)
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-gic-v3.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index 57eaa5a..9e31449 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -274,14 +274,13 @@ static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs
 		irqnr = gic_read_iar();
 
 		if (likely(irqnr > 15 && irqnr < 1020)) {
-			u64 irq = irq_find_mapping(gic_data.domain, irqnr);
-			if (likely(irq)) {
-				handle_IRQ(irq, regs);
-				continue;
+			int err;
+			err = handle_domain_irq(gic_data.domain, irqnr, regs);
+			if (err) {
+				WARN_ONCE(true, "Unexpected SPI received!\n");
+				gic_write_eoir(irqnr);
 			}
-
-			WARN_ONCE(true, "Unexpected SPI received!\n");
-			gic_write_eoir(irqnr);
+			continue;
 		}
 		if (irqnr < 16) {
 			gic_write_eoir(irqnr);
-- 
2.0.4


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

* [PATCH v2 19/26] irqchip: atmel-aic: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (17 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 18/26] irqchip: GICv3: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-09-01  9:32   ` Nicolas Ferre
  2014-09-01 10:16   ` Boris BREZILLON
  2014-08-26 10:03 ` [PATCH v2 20/26] irqchip: atmel-aic5: " Marc Zyngier
                   ` (8 subsequent siblings)
  27 siblings, 2 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-atmel-aic.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-atmel-aic.c b/drivers/irqchip/irq-atmel-aic.c
index a82869e..9a2cf3c 100644
--- a/drivers/irqchip/irq-atmel-aic.c
+++ b/drivers/irqchip/irq-atmel-aic.c
@@ -68,12 +68,10 @@ aic_handle(struct pt_regs *regs)
 	irqnr = irq_reg_readl(gc->reg_base + AT91_AIC_IVR);
 	irqstat = irq_reg_readl(gc->reg_base + AT91_AIC_ISR);
 
-	irqnr = irq_find_mapping(aic_domain, irqnr);
-
 	if (!irqstat)
 		irq_reg_writel(0, gc->reg_base + AT91_AIC_EOICR);
 	else
-		handle_IRQ(irqnr, regs);
+		handle_domain_irq(aic_domain, irqnr, regs);
 }
 
 static int aic_retrigger(struct irq_data *d)
-- 
2.0.4


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

* [PATCH v2 20/26] irqchip: atmel-aic5: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (18 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 19/26] irqchip: atmel-aic: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-09-01  9:33   ` Nicolas Ferre
  2014-09-01  9:51   ` Boris BREZILLON
  2014-08-26 10:03 ` [PATCH v2 21/26] irqchip: or1k-pic: " Marc Zyngier
                   ` (7 subsequent siblings)
  27 siblings, 2 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-atmel-aic5.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-atmel-aic5.c b/drivers/irqchip/irq-atmel-aic5.c
index edb2270..04fe2c1 100644
--- a/drivers/irqchip/irq-atmel-aic5.c
+++ b/drivers/irqchip/irq-atmel-aic5.c
@@ -78,12 +78,10 @@ aic5_handle(struct pt_regs *regs)
 	irqnr = irq_reg_readl(gc->reg_base + AT91_AIC5_IVR);
 	irqstat = irq_reg_readl(gc->reg_base + AT91_AIC5_ISR);
 
-	irqnr = irq_find_mapping(aic5_domain, irqnr);
-
 	if (!irqstat)
 		irq_reg_writel(0, gc->reg_base + AT91_AIC5_EOICR);
 	else
-		handle_IRQ(irqnr, regs);
+		handle_domain_irq(aic5_domain, irqnr, regs);
 }
 
 static void aic5_mask(struct irq_data *d)
-- 
2.0.4


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

* [PATCH v2 21/26] irqchip: or1k-pic: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (19 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 20/26] irqchip: atmel-aic5: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-27 17:09   ` Stefan Kristiansson
  2014-08-26 10:03 ` [PATCH v2 22/26] ARM: imx: avic: " Marc Zyngier
                   ` (6 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 drivers/irqchip/irq-or1k-pic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/irqchip/irq-or1k-pic.c b/drivers/irqchip/irq-or1k-pic.c
index 17ff033..e93d079 100644
--- a/drivers/irqchip/irq-or1k-pic.c
+++ b/drivers/irqchip/irq-or1k-pic.c
@@ -113,7 +113,7 @@ static inline int pic_get_irq(int first)
 	else
 		hwirq = hwirq + first - 1;
 
-	return irq_find_mapping(root_domain, hwirq);
+	return hwirq;
 }
 
 static void or1k_pic_handle_irq(struct pt_regs *regs)
@@ -121,7 +121,7 @@ static void or1k_pic_handle_irq(struct pt_regs *regs)
 	int irq = -1;
 
 	while ((irq = pic_get_irq(irq + 1)) != NO_IRQ)
-		handle_IRQ(irq, regs);
+		handle_domain_irq(root_domain, irq, regs);
 }
 
 static int or1k_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw)
-- 
2.0.4


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

* [PATCH v2 22/26] ARM: imx: avic: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (20 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 21/26] irqchip: or1k-pic: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-27  6:40   ` Shawn Guo
  2014-08-26 10:03 ` [PATCH v2 23/26] ARM: imx: tzic: " Marc Zyngier
                   ` (5 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm/mach-imx/avic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/avic.c b/arch/arm/mach-imx/avic.c
index 24b103c..1a89323 100644
--- a/arch/arm/mach-imx/avic.c
+++ b/arch/arm/mach-imx/avic.c
@@ -144,7 +144,7 @@ static void __exception_irq_entry avic_handle_irq(struct pt_regs *regs)
 		if (nivector == 0xffff)
 			break;
 
-		handle_IRQ(irq_find_mapping(domain, nivector), regs);
+		handle_domain_irq(domain, nivector, regs);
 	} while (1);
 }
 
-- 
2.0.4


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

* [PATCH v2 23/26] ARM: imx: tzic: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (21 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 22/26] ARM: imx: avic: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-27  6:40   ` Shawn Guo
  2014-08-26 10:03 ` [PATCH v2 24/26] ARM: omap2: irq: " Marc Zyngier
                   ` (4 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm/mach-imx/tzic.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/arm/mach-imx/tzic.c b/arch/arm/mach-imx/tzic.c
index 1d4f384..4de65ee 100644
--- a/arch/arm/mach-imx/tzic.c
+++ b/arch/arm/mach-imx/tzic.c
@@ -141,8 +141,7 @@ static void __exception_irq_entry tzic_handle_irq(struct pt_regs *regs)
 			while (stat) {
 				handled = 1;
 				irqofs = fls(stat) - 1;
-				handle_IRQ(irq_find_mapping(domain,
-						irqofs + i * 32), regs);
+				handle_domain_irq(domain, irqofs + i * 32, regs);
 				stat &= ~(1 << irqofs);
 			}
 		}
-- 
2.0.4


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

* [PATCH v2 24/26] ARM: omap2: irq: convert to handle_domain_irq
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (22 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 23/26] ARM: imx: tzic: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 20:57   ` Tony Lindgren
  2014-08-26 10:03 ` [PATCH v2 25/26] arm64: get rid of handle_IRQ Marc Zyngier
                   ` (3 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

Use the new handle_domain_irq method to handle interrupts.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm/mach-omap2/irq.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index 35b8590..a62ba5a 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -248,8 +248,7 @@ out:
 		irqnr &= ACTIVEIRQ_MASK;
 
 		if (irqnr) {
-			irqnr = irq_find_mapping(domain, irqnr);
-			handle_IRQ(irqnr, regs);
+			handle_domain_irq(domain, irqnr, regs);
 			handled_irq = 1;
 		}
 	} while (irqnr);
-- 
2.0.4


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

* [PATCH v2 25/26] arm64: get rid of handle_IRQ
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (23 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 24/26] ARM: omap2: irq: " Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 16:53   ` Catalin Marinas
  2014-08-26 10:03 ` [PATCH v2 26/26] openrisc: " Marc Zyngier
                   ` (2 subsequent siblings)
  27 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

All the arm64 irqchip drivers have been converted to handle_domain_irq,
making it possible to remove the handle_IRQ stub entierely.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm64/include/asm/hardirq.h |  2 --
 arch/arm64/kernel/irq.c          | 11 -----------
 2 files changed, 13 deletions(-)

diff --git a/arch/arm64/include/asm/hardirq.h b/arch/arm64/include/asm/hardirq.h
index 0be6782..e8a3268 100644
--- a/arch/arm64/include/asm/hardirq.h
+++ b/arch/arm64/include/asm/hardirq.h
@@ -47,8 +47,6 @@ static inline void ack_bad_irq(unsigned int irq)
 	irq_err_count++;
 }
 
-extern void handle_IRQ(unsigned int, struct pt_regs *);
-
 /*
  * No arch-specific IRQ flags.
  */
diff --git a/arch/arm64/kernel/irq.c b/arch/arm64/kernel/irq.c
index 2c0e2a7..67ca197 100644
--- a/arch/arm64/kernel/irq.c
+++ b/arch/arm64/kernel/irq.c
@@ -40,17 +40,6 @@ int arch_show_interrupts(struct seq_file *p, int prec)
 	return 0;
 }
 
-/*
- * handle_IRQ handles all hardware IRQ's.  Decoded IRQs should
- * not come via this function.  Instead, they should provide their
- * own 'handler'.  Used by platform code implementing C-based 1st
- * level decoding.
- */
-void handle_IRQ(unsigned int irq, struct pt_regs *regs)
-{
-	__handle_domain_irq(NULL, irq, false, regs);
-}
-
 void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
 {
 	if (handle_arch_irq)
-- 
2.0.4


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

* [PATCH v2 26/26] openrisc: get rid of handle_IRQ
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (24 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 25/26] arm64: get rid of handle_IRQ Marc Zyngier
@ 2014-08-26 10:03 ` Marc Zyngier
  2014-08-26 21:34 ` [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Thomas Gleixner
  2014-09-03 13:18 ` Jason Cooper
  27 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 10:03 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: linux, shawn.guo, kernel, tony, catalin.marinas, will.deacon,
	jonas, tglx, jason, shc_work, baohua, maxime.ripard,
	marc.zyngier, khilman, sboyd, lorenzo.pieralisi, larry.bassel,
	mark.rutland, sudeep.holla, stefan.kristiansson, vkale,
	schwidefsky

The openrisc irqchip driver has been converted to handle_domain_irq,
making it possible to remove the handle_IRQ stub entierely.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/openrisc/include/asm/irq.h | 1 -
 arch/openrisc/kernel/irq.c      | 5 -----
 2 files changed, 6 deletions(-)

diff --git a/arch/openrisc/include/asm/irq.h b/arch/openrisc/include/asm/irq.h
index b84634c..d9eee0a 100644
--- a/arch/openrisc/include/asm/irq.h
+++ b/arch/openrisc/include/asm/irq.h
@@ -24,7 +24,6 @@
 
 #define NO_IRQ		(-1)
 
-void handle_IRQ(unsigned int, struct pt_regs *);
 extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
 
 #endif /* __ASM_OPENRISC_IRQ_H__ */
diff --git a/arch/openrisc/kernel/irq.c b/arch/openrisc/kernel/irq.c
index e9aaf28..35e478a 100644
--- a/arch/openrisc/kernel/irq.c
+++ b/arch/openrisc/kernel/irq.c
@@ -48,11 +48,6 @@ void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
 	handle_arch_irq = handle_irq;
 }
 
-void handle_IRQ(unsigned int irq, struct pt_regs *regs)
-{
-	__handle_domain_irq(NULL, irq, false, regs);
-}
-
 void __irq_entry do_IRQ(struct pt_regs *regs)
 {
 	handle_arch_irq(regs);
-- 
2.0.4


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

* Re: [PATCH v2 02/26] arm64: convert handle_IRQ to use __handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 02/26] arm64: convert handle_IRQ to use __handle_domain_irq Marc Zyngier
@ 2014-08-26 16:51   ` Catalin Marinas
  2014-08-26 16:58     ` Marc Zyngier
  0 siblings, 1 reply; 54+ messages in thread
From: Catalin Marinas @ 2014-08-26 16:51 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, Will Deacon, jonas, tglx, jason,
	shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On Tue, Aug 26, 2014 at 11:03:17AM +0100, Marc Zyngier wrote:
> In order to limit code duplication, convert the architecture specific
> handle_IRQ to use the generic __handle_domain_irq function.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  arch/arm64/Kconfig      |  1 +
>  arch/arm64/kernel/irq.c | 18 +-----------------
>  2 files changed, 2 insertions(+), 17 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index fd4e81a..1f16ed9 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -30,6 +30,7 @@ config ARM64
>  	select GENERIC_STRNCPY_FROM_USER
>  	select GENERIC_STRNLEN_USER
>  	select GENERIC_TIME_VSYSCALL
> +	select HANDLE_DOMAIN_IRQ
>  	select HARDIRQS_SW_RESEND
>  	select HAVE_ARCH_AUDITSYSCALL
>  	select HAVE_ARCH_JUMP_LABEL
> diff --git a/arch/arm64/kernel/irq.c b/arch/arm64/kernel/irq.c
> index 0f08dfd..2c0e2a7 100644
> --- a/arch/arm64/kernel/irq.c
> +++ b/arch/arm64/kernel/irq.c
> @@ -48,23 +48,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
>   */
>  void handle_IRQ(unsigned int irq, struct pt_regs *regs)
>  {
> -	struct pt_regs *old_regs = set_irq_regs(regs);
> -
> -	irq_enter();
> -
> -	/*
> -	 * Some hardware gives randomly wrong interrupts.  Rather
> -	 * than crashing, do something sensible.
> -	 */
> -	if (unlikely(irq >= nr_irqs)) {
> -		pr_warn_ratelimited("Bad IRQ%u\n", irq);
> -		ack_bad_irq(irq);
> -	} else {
> -		generic_handle_irq(irq);
> -	}
> -
> -	irq_exit();
> -	set_irq_regs(old_regs);
> +	__handle_domain_irq(NULL, irq, false, regs);
>  }

The only thing that's missing is a pr_warn_ratelimited(). Do we still
need it? We could add it to ack_bad_irq() though.

Either way:

Acked-by: Catalin Marinas <catalin.marinas@arm.com>

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

* Re: [PATCH v2 25/26] arm64: get rid of handle_IRQ
  2014-08-26 10:03 ` [PATCH v2 25/26] arm64: get rid of handle_IRQ Marc Zyngier
@ 2014-08-26 16:53   ` Catalin Marinas
  0 siblings, 0 replies; 54+ messages in thread
From: Catalin Marinas @ 2014-08-26 16:53 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, Will Deacon, jonas, tglx, jason,
	shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On Tue, Aug 26, 2014 at 11:03:40AM +0100, Marc Zyngier wrote:
> All the arm64 irqchip drivers have been converted to handle_domain_irq,
> making it possible to remove the handle_IRQ stub entierely.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Catalin Marinas <catalin.marinas@arm.com>

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

* Re: [PATCH v2 02/26] arm64: convert handle_IRQ to use __handle_domain_irq
  2014-08-26 16:51   ` Catalin Marinas
@ 2014-08-26 16:58     ` Marc Zyngier
  0 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 16:58 UTC (permalink / raw)
  To: Catalin Marinas
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, Will Deacon, jonas, tglx, jason,
	shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On 26/08/14 17:51, Catalin Marinas wrote:
> On Tue, Aug 26, 2014 at 11:03:17AM +0100, Marc Zyngier wrote:
>> In order to limit code duplication, convert the architecture specific
>> handle_IRQ to use the generic __handle_domain_irq function.
>>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>> ---
>>  arch/arm64/Kconfig      |  1 +
>>  arch/arm64/kernel/irq.c | 18 +-----------------
>>  2 files changed, 2 insertions(+), 17 deletions(-)
>>
>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index fd4e81a..1f16ed9 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -30,6 +30,7 @@ config ARM64
>>  	select GENERIC_STRNCPY_FROM_USER
>>  	select GENERIC_STRNLEN_USER
>>  	select GENERIC_TIME_VSYSCALL
>> +	select HANDLE_DOMAIN_IRQ
>>  	select HARDIRQS_SW_RESEND
>>  	select HAVE_ARCH_AUDITSYSCALL
>>  	select HAVE_ARCH_JUMP_LABEL
>> diff --git a/arch/arm64/kernel/irq.c b/arch/arm64/kernel/irq.c
>> index 0f08dfd..2c0e2a7 100644
>> --- a/arch/arm64/kernel/irq.c
>> +++ b/arch/arm64/kernel/irq.c
>> @@ -48,23 +48,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
>>   */
>>  void handle_IRQ(unsigned int irq, struct pt_regs *regs)
>>  {
>> -	struct pt_regs *old_regs = set_irq_regs(regs);
>> -
>> -	irq_enter();
>> -
>> -	/*
>> -	 * Some hardware gives randomly wrong interrupts.  Rather
>> -	 * than crashing, do something sensible.
>> -	 */
>> -	if (unlikely(irq >= nr_irqs)) {
>> -		pr_warn_ratelimited("Bad IRQ%u\n", irq);
>> -		ack_bad_irq(irq);
>> -	} else {
>> -		generic_handle_irq(irq);
>> -	}
>> -
>> -	irq_exit();
>> -	set_irq_regs(old_regs);
>> +	__handle_domain_irq(NULL, irq, false, regs);
>>  }
> 
> The only thing that's missing is a pr_warn_ratelimited(). Do we still
> need it? We could add it to ack_bad_irq() though.

Indeed, we could move the warning to ack_bad_irq(), which is always
architecture specific. I'll add that to the next version of the series.

> Either way:
> 
> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> 

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

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

* Re: [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler
  2014-08-26 10:03 ` [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler Marc Zyngier
@ 2014-08-26 17:42   ` Stephen Boyd
  2014-08-26 18:07     ` Marc Zyngier
  0 siblings, 1 reply; 54+ messages in thread
From: Stephen Boyd @ 2014-08-26 17:42 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, catalin.marinas, will.deacon, jonas,
	tglx, jason, shc_work, baohua, maxime.ripard, khilman,
	lorenzo.pieralisi, larry.bassel, mark.rutland, sudeep.holla,
	stefan.kristiansson, vkale, schwidefsky, Vladimir Murzin

On 08/26/14 03:03, Marc Zyngier wrote:
> Calling irq_find_mapping from outside a irq_{enter,exit} section is
> unsafe and produces ugly messages if CONFIG_PROVE_RCU is enabled:
> If coming from the idle state, the rcu_read_lock call in irq_find_mapping
> will generate an unpleasant warning:
>
> <quote>
> ===============================
> [ INFO: suspicious RCU usage. ]
> 3.16.0-rc1+ #135 Not tainted
> -------------------------------
> include/linux/rcupdate.h:871 rcu_read_lock() used illegally while idle!
>
> other info that might help us debug this:
>
> RCU used illegally from idle CPU!
> rcu_scheduler_active = 1, debug_locks = 0
> RCU used illegally from extended quiescent state!
> 1 lock held by swapper/0/0:
>  #0:  (rcu_read_lock){......}, at: [<ffffffc00010206c>]
> irq_find_mapping+0x4c/0x198

Do you have the whole stacktrace? I don't see where this is called
outside of irq_enter() from within the idle loop, but maybe I missed
something.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation


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

* Re: [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler
  2014-08-26 17:42   ` Stephen Boyd
@ 2014-08-26 18:07     ` Marc Zyngier
  2014-08-26 18:46       ` Stephen Boyd
  0 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-26 18:07 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	tglx, jason, shc_work, baohua, maxime.ripard, khilman,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky, Vladimir Murzin

On 26/08/14 18:42, Stephen Boyd wrote:
> On 08/26/14 03:03, Marc Zyngier wrote:
>> Calling irq_find_mapping from outside a irq_{enter,exit} section is
>> unsafe and produces ugly messages if CONFIG_PROVE_RCU is enabled:
>> If coming from the idle state, the rcu_read_lock call in irq_find_mapping
>> will generate an unpleasant warning:
>>
>> <quote>
>> ===============================
>> [ INFO: suspicious RCU usage. ]
>> 3.16.0-rc1+ #135 Not tainted
>> -------------------------------
>> include/linux/rcupdate.h:871 rcu_read_lock() used illegally while idle!
>>
>> other info that might help us debug this:
>>
>> RCU used illegally from idle CPU!
>> rcu_scheduler_active = 1, debug_locks = 0
>> RCU used illegally from extended quiescent state!
>> 1 lock held by swapper/0/0:
>>  #0:  (rcu_read_lock){......}, at: [<ffffffc00010206c>]
>> irq_find_mapping+0x4c/0x198
> 
> Do you have the whole stacktrace? I don't see where this is called
> outside of irq_enter() from within the idle loop, but maybe I missed
> something.
> 

Hi Stephen,

Digging into my email, one of the traces looked like this:

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.16.0-rc1+ #135
Call trace:
[<ffffffc0000882cc>] dump_backtrace+0x0/0x12c
[<ffffffc000088408>] show_stack+0x10/0x1c
[<ffffffc0004ee5f0>] dump_stack+0x74/0xc4
[<ffffffc0000edfbc>] lockdep_rcu_suspicious+0xe8/0x124
[<ffffffc00010218c>] irq_find_mapping+0x16c/0x198
[<ffffffc00008130c>] gic_handle_irq+0x38/0xcc

Most drivers call irq_find_mapping outside of irq_enter()/irq_exit(), as
this is in handle_IRQ().

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

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

* Re: [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler
  2014-08-26 18:07     ` Marc Zyngier
@ 2014-08-26 18:46       ` Stephen Boyd
  2014-08-26 19:05         ` Stephen Boyd
  2014-09-01 15:22         ` Russell King - ARM Linux
  0 siblings, 2 replies; 54+ messages in thread
From: Stephen Boyd @ 2014-08-26 18:46 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	tglx, jason, shc_work, baohua, maxime.ripard, khilman,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky, Vladimir Murzin

On 08/26/14 11:07, Marc Zyngier wrote:
> Digging into my email, one of the traces looked like this:
>
> stack backtrace:
> CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.16.0-rc1+ #135
> Call trace:
> [<ffffffc0000882cc>] dump_backtrace+0x0/0x12c
> [<ffffffc000088408>] show_stack+0x10/0x1c
> [<ffffffc0004ee5f0>] dump_stack+0x74/0xc4
> [<ffffffc0000edfbc>] lockdep_rcu_suspicious+0xe8/0x124
> [<ffffffc00010218c>] irq_find_mapping+0x16c/0x198
> [<ffffffc00008130c>] gic_handle_irq+0x38/0xcc
>
> Most drivers call irq_find_mapping outside of irq_enter()/irq_exit(), as
> this is in handle_IRQ().
>

Ah ok. This is the multi-irq handler case? Has this been broken since
v3.2 at least for the gic users? Now that we call irq_enter()/irq_exit()
a lot more code runs, including things like updating jiffies when
interrupts arrive and invoking softirq? Do we only call irq_exit() on
the IPI path otherwise?

Are there any plans to send this back to stable trees? Not calling
irq_enter()/irq_exit() when we get an interrupt seems like a big problem.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation


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

* Re: [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler
  2014-08-26 18:46       ` Stephen Boyd
@ 2014-08-26 19:05         ` Stephen Boyd
  2014-09-01 15:22         ` Russell King - ARM Linux
  1 sibling, 0 replies; 54+ messages in thread
From: Stephen Boyd @ 2014-08-26 19:05 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Mark Rutland, tony, Catalin Marinas, linux, Will Deacon,
	Vladimir Murzin, tglx, jonas, Lorenzo Pieralisi, linux, shc_work,
	shawn.guo, khilman, jason, stefan.kristiansson, larry.bassel,
	linux-omap, linux-arm-kernel, baohua, linux-kernel, kernel,
	Sudeep Holla, schwidefsky, maxime.ripard, vkale

On 08/26/14 11:46, Stephen Boyd wrote:
> On 08/26/14 11:07, Marc Zyngier wrote:
>> Digging into my email, one of the traces looked like this:
>>
>> stack backtrace:
>> CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.16.0-rc1+ #135
>> Call trace:
>> [<ffffffc0000882cc>] dump_backtrace+0x0/0x12c
>> [<ffffffc000088408>] show_stack+0x10/0x1c
>> [<ffffffc0004ee5f0>] dump_stack+0x74/0xc4
>> [<ffffffc0000edfbc>] lockdep_rcu_suspicious+0xe8/0x124
>> [<ffffffc00010218c>] irq_find_mapping+0x16c/0x198
>> [<ffffffc00008130c>] gic_handle_irq+0x38/0xcc
>>
>> Most drivers call irq_find_mapping outside of irq_enter()/irq_exit(), as
>> this is in handle_IRQ().
>>
> Ah ok. This is the multi-irq handler case? Has this been broken since
> v3.2 at least for the gic users? Now that we call irq_enter()/irq_exit()
> a lot more code runs, including things like updating jiffies when
> interrupts arrive and invoking softirq? Do we only call irq_exit() on
> the IPI path otherwise?
>
> Are there any plans to send this back to stable trees? Not calling
> irq_enter()/irq_exit() when we get an interrupt seems like a big problem.
>

Hmm I see we still call handle_IRQ eventually. So it's not as bad as I
first thought.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation


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

* Re: [PATCH v2 24/26] ARM: omap2: irq: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 24/26] ARM: omap2: irq: " Marc Zyngier
@ 2014-08-26 20:57   ` Tony Lindgren
  0 siblings, 0 replies; 54+ messages in thread
From: Tony Lindgren @ 2014-08-26 20:57 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, catalin.marinas, will.deacon, jonas, tglx,
	jason, shc_work, baohua, maxime.ripard, khilman, sboyd,
	lorenzo.pieralisi, larry.bassel, mark.rutland, sudeep.holla,
	stefan.kristiansson, vkale, schwidefsky

* Marc Zyngier <marc.zyngier@arm.com> [140826 03:05]:
> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Seems to boot:

Acked-by: Tony Lindgren <tony@atomide.com>

> ---
>  arch/arm/mach-omap2/irq.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
> index 35b8590..a62ba5a 100644
> --- a/arch/arm/mach-omap2/irq.c
> +++ b/arch/arm/mach-omap2/irq.c
> @@ -248,8 +248,7 @@ out:
>  		irqnr &= ACTIVEIRQ_MASK;
>  
>  		if (irqnr) {
> -			irqnr = irq_find_mapping(domain, irqnr);
> -			handle_IRQ(irqnr, regs);
> +			handle_domain_irq(domain, irqnr, regs);
>  			handled_irq = 1;
>  		}
>  	} while (irqnr);
> -- 
> 2.0.4
> 

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (25 preceding siblings ...)
  2014-08-26 10:03 ` [PATCH v2 26/26] openrisc: " Marc Zyngier
@ 2014-08-26 21:34 ` Thomas Gleixner
  2014-08-27  9:33   ` Marc Zyngier
  2014-09-03 13:18 ` Jason Cooper
  27 siblings, 1 reply; 54+ messages in thread
From: Thomas Gleixner @ 2014-08-26 21:34 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, catalin.marinas, will.deacon, jonas,
	jason, shc_work, baohua, maxime.ripard, khilman, sboyd,
	lorenzo.pieralisi, larry.bassel, mark.rutland, sudeep.holla,
	stefan.kristiansson, vkale, schwidefsky

On Tue, 26 Aug 2014, Marc Zyngier wrote:

> A number of irqchip drivers are directly calling irq_find_mapping,
> which may use a rcu_read_lock call when walking the radix tree.
> 
> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
> the kernel will shout at you, as using RCU in this context may be
> illegal (specially if coming from the idle state, where RCU would be
> in a quiescent state).
> 
> A possible fix would be to wrap calls to irq_find_mapping into a
> RCU_NONIDLE macro, but that really looks ugly.
> 
> This patch series introduce another generic IRQ entry point
> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
> (as defined on arm, arm64 and openrisc), except that it also takes a
> irq_domain pointer. This allows the logical IRQ lookup to be done
> inside the irq_{enter,exit} section, which contains a
> rcu_irq_{enter,exit}, making it safe.

Looks good. Should this be routed to the genirq tree?

Thanks,

	tglx

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

* Re: [PATCH v2 09/26] irqchip: mxs: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 09/26] irqchip: mxs: " Marc Zyngier
@ 2014-08-27  6:38   ` Shawn Guo
  0 siblings, 0 replies; 54+ messages in thread
From: Shawn Guo @ 2014-08-27  6:38 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux, kernel,
	tony, catalin.marinas, will.deacon, jonas, tglx, jason, shc_work,
	baohua, maxime.ripard, khilman, sboyd, lorenzo.pieralisi,
	larry.bassel, mark.rutland, sudeep.holla, stefan.kristiansson,
	vkale, schwidefsky

On Tue, Aug 26, 2014 at 11:03:24AM +0100, Marc Zyngier wrote:
> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Shawn Guo <shawn.guo@freescale.com>

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

* Re: [PATCH v2 22/26] ARM: imx: avic: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 22/26] ARM: imx: avic: " Marc Zyngier
@ 2014-08-27  6:40   ` Shawn Guo
  0 siblings, 0 replies; 54+ messages in thread
From: Shawn Guo @ 2014-08-27  6:40 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux, kernel,
	tony, catalin.marinas, will.deacon, jonas, tglx, jason, shc_work,
	baohua, maxime.ripard, khilman, sboyd, lorenzo.pieralisi,
	larry.bassel, mark.rutland, sudeep.holla, stefan.kristiansson,
	vkale, schwidefsky

On Tue, Aug 26, 2014 at 11:03:37AM +0100, Marc Zyngier wrote:
> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Shawn Guo <shawn.guo@freescale.com>

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

* Re: [PATCH v2 23/26] ARM: imx: tzic: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 23/26] ARM: imx: tzic: " Marc Zyngier
@ 2014-08-27  6:40   ` Shawn Guo
  0 siblings, 0 replies; 54+ messages in thread
From: Shawn Guo @ 2014-08-27  6:40 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux, kernel,
	tony, catalin.marinas, will.deacon, jonas, tglx, jason, shc_work,
	baohua, maxime.ripard, khilman, sboyd, lorenzo.pieralisi,
	larry.bassel, mark.rutland, sudeep.holla, stefan.kristiansson,
	vkale, schwidefsky

On Tue, Aug 26, 2014 at 11:03:38AM +0100, Marc Zyngier wrote:
> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Shawn Guo <shawn.guo@freescale.com>

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-08-26 21:34 ` [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Thomas Gleixner
@ 2014-08-27  9:33   ` Marc Zyngier
  2014-09-03 12:04     ` Jason Cooper
  0 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-08-27  9:33 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	jason, shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

Hi Thomas,

On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Tue, 26 Aug 2014, Marc Zyngier wrote:
>
>> A number of irqchip drivers are directly calling irq_find_mapping,
>> which may use a rcu_read_lock call when walking the radix tree.
>> 
>> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
>> the kernel will shout at you, as using RCU in this context may be
>> illegal (specially if coming from the idle state, where RCU would be
>> in a quiescent state).
>> 
>> A possible fix would be to wrap calls to irq_find_mapping into a
>> RCU_NONIDLE macro, but that really looks ugly.
>> 
>> This patch series introduce another generic IRQ entry point
>> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
>> (as defined on arm, arm64 and openrisc), except that it also takes a
>> irq_domain pointer. This allows the logical IRQ lookup to be done
>> inside the irq_{enter,exit} section, which contains a
>> rcu_irq_{enter,exit}, making it safe.
>
> Looks good. Should this be routed to the genirq tree?

I'm happy for you to take this series, provided the architecture
maintainers agree on it (I'm still to hear from the openrisc guys, and
their mailing-list seems to positively hate my guts).

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny.

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

* Re: [PATCH v2 21/26] irqchip: or1k-pic: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 21/26] irqchip: or1k-pic: " Marc Zyngier
@ 2014-08-27 17:09   ` Stefan Kristiansson
  0 siblings, 0 replies; 54+ messages in thread
From: Stefan Kristiansson @ 2014-08-27 17:09 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, catalin.marinas, will.deacon, jonas,
	tglx, jason, shc_work, baohua, maxime.ripard, khilman, sboyd,
	lorenzo.pieralisi, larry.bassel, mark.rutland, sudeep.holla,
	vkale, schwidefsky

On Tue, Aug 26, 2014 at 11:03:36AM +0100, Marc Zyngier wrote:
> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

This (and the other two openrisc related patches in this series) works fine
in my setup at least.

Acked-by: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>

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

* Re: [PATCH v2 19/26] irqchip: atmel-aic: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 19/26] irqchip: atmel-aic: " Marc Zyngier
@ 2014-09-01  9:32   ` Nicolas Ferre
  2014-09-01 10:16   ` Boris BREZILLON
  1 sibling, 0 replies; 54+ messages in thread
From: Nicolas Ferre @ 2014-09-01  9:32 UTC (permalink / raw)
  To: Marc Zyngier, linux-arm-kernel, linux-kernel, linux-omap, linux
  Cc: mark.rutland, tony, catalin.marinas, will.deacon, tglx, jonas,
	lorenzo.pieralisi, linux, shc_work, khilman, jason,
	stefan.kristiansson, larry.bassel, shawn.guo, baohua, sboyd,
	kernel, sudeep.holla, schwidefsky, maxime.ripard, vkale

On 26/08/2014 12:03, Marc Zyngier :
> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Booting okay:

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

> ---
>  drivers/irqchip/irq-atmel-aic.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-atmel-aic.c b/drivers/irqchip/irq-atmel-aic.c
> index a82869e..9a2cf3c 100644
> --- a/drivers/irqchip/irq-atmel-aic.c
> +++ b/drivers/irqchip/irq-atmel-aic.c
> @@ -68,12 +68,10 @@ aic_handle(struct pt_regs *regs)
>  	irqnr = irq_reg_readl(gc->reg_base + AT91_AIC_IVR);
>  	irqstat = irq_reg_readl(gc->reg_base + AT91_AIC_ISR);
>  
> -	irqnr = irq_find_mapping(aic_domain, irqnr);
> -
>  	if (!irqstat)
>  		irq_reg_writel(0, gc->reg_base + AT91_AIC_EOICR);
>  	else
> -		handle_IRQ(irqnr, regs);
> +		handle_domain_irq(aic_domain, irqnr, regs);
>  }
>  
>  static int aic_retrigger(struct irq_data *d)
> 


-- 
Nicolas Ferre

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

* Re: [PATCH v2 20/26] irqchip: atmel-aic5: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 20/26] irqchip: atmel-aic5: " Marc Zyngier
@ 2014-09-01  9:33   ` Nicolas Ferre
  2014-09-01  9:51   ` Boris BREZILLON
  1 sibling, 0 replies; 54+ messages in thread
From: Nicolas Ferre @ 2014-09-01  9:33 UTC (permalink / raw)
  To: Marc Zyngier, linux-arm-kernel, linux-kernel, linux-omap, linux,
	Boris BREZILLON
  Cc: mark.rutland, tony, catalin.marinas, will.deacon, tglx, jonas,
	lorenzo.pieralisi, linux, shc_work, khilman, jason,
	stefan.kristiansson, larry.bassel, shawn.guo, baohua, sboyd,
	kernel, sudeep.holla, schwidefsky, maxime.ripard, vkale

On 26/08/2014 12:03, Marc Zyngier :
> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Ok, thanks:

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

> ---
>  drivers/irqchip/irq-atmel-aic5.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-atmel-aic5.c b/drivers/irqchip/irq-atmel-aic5.c
> index edb2270..04fe2c1 100644
> --- a/drivers/irqchip/irq-atmel-aic5.c
> +++ b/drivers/irqchip/irq-atmel-aic5.c
> @@ -78,12 +78,10 @@ aic5_handle(struct pt_regs *regs)
>  	irqnr = irq_reg_readl(gc->reg_base + AT91_AIC5_IVR);
>  	irqstat = irq_reg_readl(gc->reg_base + AT91_AIC5_ISR);
>  
> -	irqnr = irq_find_mapping(aic5_domain, irqnr);
> -
>  	if (!irqstat)
>  		irq_reg_writel(0, gc->reg_base + AT91_AIC5_EOICR);
>  	else
> -		handle_IRQ(irqnr, regs);
> +		handle_domain_irq(aic5_domain, irqnr, regs);
>  }
>  
>  static void aic5_mask(struct irq_data *d)
> 


-- 
Nicolas Ferre

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

* Re: [PATCH v2 20/26] irqchip: atmel-aic5: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 20/26] irqchip: atmel-aic5: " Marc Zyngier
  2014-09-01  9:33   ` Nicolas Ferre
@ 2014-09-01  9:51   ` Boris BREZILLON
  1 sibling, 0 replies; 54+ messages in thread
From: Boris BREZILLON @ 2014-09-01  9:51 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, mark.rutland,
	tony, catalin.marinas, will.deacon, tglx, jonas,
	lorenzo.pieralisi, linux, shc_work, khilman, jason,
	stefan.kristiansson, larry.bassel, shawn.guo, baohua, sboyd,
	kernel, sudeep.holla, schwidefsky, maxime.ripard, vkale

On Tue, 26 Aug 2014 11:03:35 +0100
Marc Zyngier <marc.zyngier@arm.com> wrote:

> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>

> ---
>  drivers/irqchip/irq-atmel-aic5.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-atmel-aic5.c b/drivers/irqchip/irq-atmel-aic5.c
> index edb2270..04fe2c1 100644
> --- a/drivers/irqchip/irq-atmel-aic5.c
> +++ b/drivers/irqchip/irq-atmel-aic5.c
> @@ -78,12 +78,10 @@ aic5_handle(struct pt_regs *regs)
>  	irqnr = irq_reg_readl(gc->reg_base + AT91_AIC5_IVR);
>  	irqstat = irq_reg_readl(gc->reg_base + AT91_AIC5_ISR);
>  
> -	irqnr = irq_find_mapping(aic5_domain, irqnr);
> -
>  	if (!irqstat)
>  		irq_reg_writel(0, gc->reg_base + AT91_AIC5_EOICR);
>  	else
> -		handle_IRQ(irqnr, regs);
> +		handle_domain_irq(aic5_domain, irqnr, regs);
>  }
>  
>  static void aic5_mask(struct irq_data *d)



-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* Re: [PATCH v2 19/26] irqchip: atmel-aic: convert to handle_domain_irq
  2014-08-26 10:03 ` [PATCH v2 19/26] irqchip: atmel-aic: " Marc Zyngier
  2014-09-01  9:32   ` Nicolas Ferre
@ 2014-09-01 10:16   ` Boris BREZILLON
  1 sibling, 0 replies; 54+ messages in thread
From: Boris BREZILLON @ 2014-09-01 10:16 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, mark.rutland,
	tony, catalin.marinas, will.deacon, tglx, jonas,
	lorenzo.pieralisi, linux, shc_work, khilman, jason,
	stefan.kristiansson, larry.bassel, shawn.guo, baohua, sboyd,
	kernel, sudeep.holla, schwidefsky, maxime.ripard, vkale

On Tue, 26 Aug 2014 11:03:34 +0100
Marc Zyngier <marc.zyngier@arm.com> wrote:

> Use the new handle_domain_irq method to handle interrupts.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>

> ---
>  drivers/irqchip/irq-atmel-aic.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-atmel-aic.c b/drivers/irqchip/irq-atmel-aic.c
> index a82869e..9a2cf3c 100644
> --- a/drivers/irqchip/irq-atmel-aic.c
> +++ b/drivers/irqchip/irq-atmel-aic.c
> @@ -68,12 +68,10 @@ aic_handle(struct pt_regs *regs)
>  	irqnr = irq_reg_readl(gc->reg_base + AT91_AIC_IVR);
>  	irqstat = irq_reg_readl(gc->reg_base + AT91_AIC_ISR);
>  
> -	irqnr = irq_find_mapping(aic_domain, irqnr);
> -
>  	if (!irqstat)
>  		irq_reg_writel(0, gc->reg_base + AT91_AIC_EOICR);
>  	else
> -		handle_IRQ(irqnr, regs);
> +		handle_domain_irq(aic_domain, irqnr, regs);
>  }
>  
>  static int aic_retrigger(struct irq_data *d)



-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* Re: [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler
  2014-08-26 18:46       ` Stephen Boyd
  2014-08-26 19:05         ` Stephen Boyd
@ 2014-09-01 15:22         ` Russell King - ARM Linux
  1 sibling, 0 replies; 54+ messages in thread
From: Russell King - ARM Linux @ 2014-09-01 15:22 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: Marc Zyngier, linux-arm-kernel, linux-kernel, linux-omap, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	tglx, jason, shc_work, baohua, maxime.ripard, khilman,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky, Vladimir Murzin

On Tue, Aug 26, 2014 at 11:46:38AM -0700, Stephen Boyd wrote:
> Ah ok. This is the multi-irq handler case? Has this been broken since
> v3.2 at least for the gic users? Now that we call irq_enter()/irq_exit()
> a lot more code runs, including things like updating jiffies when
> interrupts arrive and invoking softirq? Do we only call irq_exit() on
> the IPI path otherwise?
> 
> Are there any plans to send this back to stable trees? Not calling
> irq_enter()/irq_exit() when we get an interrupt seems like a big problem.

gic_handle_irq() calls handle_IRQ() which has the irq_enter()..irq_exit()
wrappers.

If we didn't have irq_exit(), then softirq's would be totally broken on
all gic-based platforms.

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-08-27  9:33   ` Marc Zyngier
@ 2014-09-03 12:04     ` Jason Cooper
  2014-09-03 12:09       ` Thomas Gleixner
  0 siblings, 1 reply; 54+ messages in thread
From: Jason Cooper @ 2014-09-03 12:04 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Thomas Gleixner, linux-arm-kernel, linux-kernel, linux-omap,
	linux, linux, shawn.guo, kernel, tony, Catalin Marinas,
	Will Deacon, jonas, shc_work, baohua, maxime.ripard, khilman,
	sboyd, Lorenzo Pieralisi, larry.bassel, Mark R utland,
	Sudeep Holla, stefan.kristiansson, vkale, schwidefsky

On Wed, Aug 27, 2014 at 10:33:44AM +0100, Marc Zyngier wrote:
> Hi Thomas,
> 
> On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
> > On Tue, 26 Aug 2014, Marc Zyngier wrote:
> >
> >> A number of irqchip drivers are directly calling irq_find_mapping,
> >> which may use a rcu_read_lock call when walking the radix tree.
> >> 
> >> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
> >> the kernel will shout at you, as using RCU in this context may be
> >> illegal (specially if coming from the idle state, where RCU would be
> >> in a quiescent state).
> >> 
> >> A possible fix would be to wrap calls to irq_find_mapping into a
> >> RCU_NONIDLE macro, but that really looks ugly.
> >> 
> >> This patch series introduce another generic IRQ entry point
> >> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
> >> (as defined on arm, arm64 and openrisc), except that it also takes a
> >> irq_domain pointer. This allows the logical IRQ lookup to be done
> >> inside the irq_{enter,exit} section, which contains a
> >> rcu_irq_{enter,exit}, making it safe.
> >
> > Looks good. Should this be routed to the genirq tree?
> 
> I'm happy for you to take this series, provided the architecture
> maintainers agree on it (I'm still to hear from the openrisc guys, and
> their mailing-list seems to positively hate my guts).

I think everyone's had a chance to look over it by now.  Thomas, shall I
take the series?

thx,

Jason.

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-09-03 12:04     ` Jason Cooper
@ 2014-09-03 12:09       ` Thomas Gleixner
  2014-09-03 12:21         ` Marc Zyngier
  0 siblings, 1 reply; 54+ messages in thread
From: Thomas Gleixner @ 2014-09-03 12:09 UTC (permalink / raw)
  To: Jason Cooper
  Cc: Marc Zyngier, linux-arm-kernel, linux-kernel, linux-omap, linux,
	linux, shawn.guo, kernel, tony, Catalin Marinas, Will Deacon,
	jonas, shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark R utland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On Wed, 3 Sep 2014, Jason Cooper wrote:

> On Wed, Aug 27, 2014 at 10:33:44AM +0100, Marc Zyngier wrote:
> > Hi Thomas,
> > 
> > On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
> > > On Tue, 26 Aug 2014, Marc Zyngier wrote:
> > >
> > >> A number of irqchip drivers are directly calling irq_find_mapping,
> > >> which may use a rcu_read_lock call when walking the radix tree.
> > >> 
> > >> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
> > >> the kernel will shout at you, as using RCU in this context may be
> > >> illegal (specially if coming from the idle state, where RCU would be
> > >> in a quiescent state).
> > >> 
> > >> A possible fix would be to wrap calls to irq_find_mapping into a
> > >> RCU_NONIDLE macro, but that really looks ugly.
> > >> 
> > >> This patch series introduce another generic IRQ entry point
> > >> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
> > >> (as defined on arm, arm64 and openrisc), except that it also takes a
> > >> irq_domain pointer. This allows the logical IRQ lookup to be done
> > >> inside the irq_{enter,exit} section, which contains a
> > >> rcu_irq_{enter,exit}, making it safe.
> > >
> > > Looks good. Should this be routed to the genirq tree?
> > 
> > I'm happy for you to take this series, provided the architecture
> > maintainers agree on it (I'm still to hear from the openrisc guys, and
> > their mailing-list seems to positively hate my guts).
> 
> I think everyone's had a chance to look over it by now.  Thomas, shall I
> take the series?

Yes please.

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-09-03 12:09       ` Thomas Gleixner
@ 2014-09-03 12:21         ` Marc Zyngier
  2014-09-03 12:25           ` Thomas Gleixner
  0 siblings, 1 reply; 54+ messages in thread
From: Marc Zyngier @ 2014-09-03 12:21 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Jason Cooper, linux-arm-kernel, linux-kernel, linux-omap, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

[Dropping linux@openrisc.net from the CC list]

On 03/09/14 13:09, Thomas Gleixner wrote:
> On Wed, 3 Sep 2014, Jason Cooper wrote:
> 
>> On Wed, Aug 27, 2014 at 10:33:44AM +0100, Marc Zyngier wrote:
>>> Hi Thomas,
>>>
>>> On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
>>>> On Tue, 26 Aug 2014, Marc Zyngier wrote:
>>>>
>>>>> A number of irqchip drivers are directly calling irq_find_mapping,
>>>>> which may use a rcu_read_lock call when walking the radix tree.
>>>>>
>>>>> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
>>>>> the kernel will shout at you, as using RCU in this context may be
>>>>> illegal (specially if coming from the idle state, where RCU would be
>>>>> in a quiescent state).
>>>>>
>>>>> A possible fix would be to wrap calls to irq_find_mapping into a
>>>>> RCU_NONIDLE macro, but that really looks ugly.
>>>>>
>>>>> This patch series introduce another generic IRQ entry point
>>>>> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
>>>>> (as defined on arm, arm64 and openrisc), except that it also takes a
>>>>> irq_domain pointer. This allows the logical IRQ lookup to be done
>>>>> inside the irq_{enter,exit} section, which contains a
>>>>> rcu_irq_{enter,exit}, making it safe.
>>>>
>>>> Looks good. Should this be routed to the genirq tree?
>>>
>>> I'm happy for you to take this series, provided the architecture
>>> maintainers agree on it (I'm still to hear from the openrisc guys, and
>>> their mailing-list seems to positively hate my guts).
>>
>> I think everyone's had a chance to look over it by now.  Thomas, shall I
>> take the series?
> 
> Yes please.

Do you want a pull request? Or are you picking up the patches from the ML?

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-09-03 12:21         ` Marc Zyngier
@ 2014-09-03 12:25           ` Thomas Gleixner
  2014-09-03 12:37             ` Jason Cooper
  2014-09-03 12:37             ` Marc Zyngier
  0 siblings, 2 replies; 54+ messages in thread
From: Thomas Gleixner @ 2014-09-03 12:25 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Jason Cooper, linux-arm-kernel, linux-kernel, linux-omap, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On Wed, 3 Sep 2014, Marc Zyngier wrote:
> [Dropping linux@openrisc.net from the CC list]
> 
> On 03/09/14 13:09, Thomas Gleixner wrote:
> > On Wed, 3 Sep 2014, Jason Cooper wrote:
> > 
> >> On Wed, Aug 27, 2014 at 10:33:44AM +0100, Marc Zyngier wrote:
> >>> Hi Thomas,
> >>>
> >>> On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
> >>>> On Tue, 26 Aug 2014, Marc Zyngier wrote:
> >>>>
> >>>>> A number of irqchip drivers are directly calling irq_find_mapping,
> >>>>> which may use a rcu_read_lock call when walking the radix tree.
> >>>>>
> >>>>> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
> >>>>> the kernel will shout at you, as using RCU in this context may be
> >>>>> illegal (specially if coming from the idle state, where RCU would be
> >>>>> in a quiescent state).
> >>>>>
> >>>>> A possible fix would be to wrap calls to irq_find_mapping into a
> >>>>> RCU_NONIDLE macro, but that really looks ugly.
> >>>>>
> >>>>> This patch series introduce another generic IRQ entry point
> >>>>> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
> >>>>> (as defined on arm, arm64 and openrisc), except that it also takes a
> >>>>> irq_domain pointer. This allows the logical IRQ lookup to be done
> >>>>> inside the irq_{enter,exit} section, which contains a
> >>>>> rcu_irq_{enter,exit}, making it safe.
> >>>>
> >>>> Looks good. Should this be routed to the genirq tree?
> >>>
> >>> I'm happy for you to take this series, provided the architecture
> >>> maintainers agree on it (I'm still to hear from the openrisc guys, and
> >>> their mailing-list seems to positively hate my guts).
> >>
> >> I think everyone's had a chance to look over it by now.  Thomas, shall I
> >> take the series?
> > 
> > Yes please.
> 
> Do you want a pull request? Or are you picking up the patches from the ML?

Did you pick up the Acked/Reviewed/Ignored-by tags?

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-09-03 12:25           ` Thomas Gleixner
@ 2014-09-03 12:37             ` Jason Cooper
  2014-09-03 12:40               ` Marc Zyngier
  2014-09-03 12:37             ` Marc Zyngier
  1 sibling, 1 reply; 54+ messages in thread
From: Jason Cooper @ 2014-09-03 12:37 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Marc Zyngier, linux-arm-kernel, linux-kernel, linux-omap, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On Wed, Sep 03, 2014 at 02:25:09PM +0200, Thomas Gleixner wrote:
> On Wed, 3 Sep 2014, Marc Zyngier wrote:
> > [Dropping linux@openrisc.net from the CC list]
> > 
> > On 03/09/14 13:09, Thomas Gleixner wrote:
> > > On Wed, 3 Sep 2014, Jason Cooper wrote:
> > > 
> > >> On Wed, Aug 27, 2014 at 10:33:44AM +0100, Marc Zyngier wrote:
> > >>> Hi Thomas,
> > >>>
> > >>> On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
> > >>>> On Tue, 26 Aug 2014, Marc Zyngier wrote:
> > >>>>
> > >>>>> A number of irqchip drivers are directly calling irq_find_mapping,
> > >>>>> which may use a rcu_read_lock call when walking the radix tree.
> > >>>>>
> > >>>>> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
> > >>>>> the kernel will shout at you, as using RCU in this context may be
> > >>>>> illegal (specially if coming from the idle state, where RCU would be
> > >>>>> in a quiescent state).
> > >>>>>
> > >>>>> A possible fix would be to wrap calls to irq_find_mapping into a
> > >>>>> RCU_NONIDLE macro, but that really looks ugly.
> > >>>>>
> > >>>>> This patch series introduce another generic IRQ entry point
> > >>>>> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
> > >>>>> (as defined on arm, arm64 and openrisc), except that it also takes a
> > >>>>> irq_domain pointer. This allows the logical IRQ lookup to be done
> > >>>>> inside the irq_{enter,exit} section, which contains a
> > >>>>> rcu_irq_{enter,exit}, making it safe.
> > >>>>
> > >>>> Looks good. Should this be routed to the genirq tree?
> > >>>
> > >>> I'm happy for you to take this series, provided the architecture
> > >>> maintainers agree on it (I'm still to hear from the openrisc guys, and
> > >>> their mailing-list seems to positively hate my guts).
> > >>
> > >> I think everyone's had a chance to look over it by now.  Thomas, shall I
> > >> take the series?
> > > 
> > > Yes please.
> > 
> > Do you want a pull request? Or are you picking up the patches from the ML?
> 
> Did you pick up the Acked/Reviewed/Ignored-by tags?

Marc, unless you've already done it, I'll pull from the ml, since I need
to apply the Acked-bys and tweak the subject lines.

thx,

Jason.

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-09-03 12:25           ` Thomas Gleixner
  2014-09-03 12:37             ` Jason Cooper
@ 2014-09-03 12:37             ` Marc Zyngier
  1 sibling, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-09-03 12:37 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Jason Cooper, linux-arm-kernel, linux-kernel, linux-omap, linux,
	shawn.guo, kernel, tony, Catalin Marinas, Will Deacon, jonas,
	shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On 03/09/14 13:25, Thomas Gleixner wrote:
> On Wed, 3 Sep 2014, Marc Zyngier wrote:
>> [Dropping linux@openrisc.net from the CC list]
>>
>> On 03/09/14 13:09, Thomas Gleixner wrote:
>>> On Wed, 3 Sep 2014, Jason Cooper wrote:
>>>
>>>> On Wed, Aug 27, 2014 at 10:33:44AM +0100, Marc Zyngier wrote:
>>>>> Hi Thomas,
>>>>>
>>>>> On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
>>>>>> On Tue, 26 Aug 2014, Marc Zyngier wrote:
>>>>>>
>>>>>>> A number of irqchip drivers are directly calling irq_find_mapping,
>>>>>>> which may use a rcu_read_lock call when walking the radix tree.
>>>>>>>
>>>>>>> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
>>>>>>> the kernel will shout at you, as using RCU in this context may be
>>>>>>> illegal (specially if coming from the idle state, where RCU would be
>>>>>>> in a quiescent state).
>>>>>>>
>>>>>>> A possible fix would be to wrap calls to irq_find_mapping into a
>>>>>>> RCU_NONIDLE macro, but that really looks ugly.
>>>>>>>
>>>>>>> This patch series introduce another generic IRQ entry point
>>>>>>> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
>>>>>>> (as defined on arm, arm64 and openrisc), except that it also takes a
>>>>>>> irq_domain pointer. This allows the logical IRQ lookup to be done
>>>>>>> inside the irq_{enter,exit} section, which contains a
>>>>>>> rcu_irq_{enter,exit}, making it safe.
>>>>>>
>>>>>> Looks good. Should this be routed to the genirq tree?
>>>>>
>>>>> I'm happy for you to take this series, provided the architecture
>>>>> maintainers agree on it (I'm still to hear from the openrisc guys, and
>>>>> their mailing-list seems to positively hate my guts).
>>>>
>>>> I think everyone's had a chance to look over it by now.  Thomas, shall I
>>>> take the series?
>>>
>>> Yes please.
>>
>> Do you want a pull request? Or are you picking up the patches from the ML?
> 
> Did you pick up the Acked/Reviewed/Ignored-by tags?

I have them in a separate branch that can be pushed out as required.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-09-03 12:37             ` Jason Cooper
@ 2014-09-03 12:40               ` Marc Zyngier
  0 siblings, 0 replies; 54+ messages in thread
From: Marc Zyngier @ 2014-09-03 12:40 UTC (permalink / raw)
  To: Jason Cooper
  Cc: Thomas Gleixner, linux-arm-kernel, linux-kernel, linux-omap,
	linux, shawn.guo, kernel, tony, Catalin Marinas, Will Deacon,
	jonas, shc_work, baohua, maxime.ripard, khilman, sboyd,
	Lorenzo Pieralisi, larry.bassel, Mark Rutland, Sudeep Holla,
	stefan.kristiansson, vkale, schwidefsky

On 03/09/14 13:37, Jason Cooper wrote:
> On Wed, Sep 03, 2014 at 02:25:09PM +0200, Thomas Gleixner wrote:
>> On Wed, 3 Sep 2014, Marc Zyngier wrote:
>>> [Dropping linux@openrisc.net from the CC list]
>>>
>>> On 03/09/14 13:09, Thomas Gleixner wrote:
>>>> On Wed, 3 Sep 2014, Jason Cooper wrote:
>>>>
>>>>> On Wed, Aug 27, 2014 at 10:33:44AM +0100, Marc Zyngier wrote:
>>>>>> Hi Thomas,
>>>>>>
>>>>>> On Tue, Aug 26 2014 at 10:34:51 pm BST, Thomas Gleixner <tglx@linutronix.de> wrote:
>>>>>>> On Tue, 26 Aug 2014, Marc Zyngier wrote:
>>>>>>>
>>>>>>>> A number of irqchip drivers are directly calling irq_find_mapping,
>>>>>>>> which may use a rcu_read_lock call when walking the radix tree.
>>>>>>>>
>>>>>>>> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
>>>>>>>> the kernel will shout at you, as using RCU in this context may be
>>>>>>>> illegal (specially if coming from the idle state, where RCU would be
>>>>>>>> in a quiescent state).
>>>>>>>>
>>>>>>>> A possible fix would be to wrap calls to irq_find_mapping into a
>>>>>>>> RCU_NONIDLE macro, but that really looks ugly.
>>>>>>>>
>>>>>>>> This patch series introduce another generic IRQ entry point
>>>>>>>> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
>>>>>>>> (as defined on arm, arm64 and openrisc), except that it also takes a
>>>>>>>> irq_domain pointer. This allows the logical IRQ lookup to be done
>>>>>>>> inside the irq_{enter,exit} section, which contains a
>>>>>>>> rcu_irq_{enter,exit}, making it safe.
>>>>>>>
>>>>>>> Looks good. Should this be routed to the genirq tree?
>>>>>>
>>>>>> I'm happy for you to take this series, provided the architecture
>>>>>> maintainers agree on it (I'm still to hear from the openrisc guys, and
>>>>>> their mailing-list seems to positively hate my guts).
>>>>>
>>>>> I think everyone's had a chance to look over it by now.  Thomas, shall I
>>>>> take the series?
>>>>
>>>> Yes please.
>>>
>>> Do you want a pull request? Or are you picking up the patches from the ML?
>>
>> Did you pick up the Acked/Reviewed/Ignored-by tags?
> 
> Marc, unless you've already done it, I'll pull from the ml, since I need
> to apply the Acked-bys and tweak the subject lines.

If you're going to repaint the subject lines, then I'll leave you to it! ;-)

	M.
-- 
Jazz is not dead. It just smells funny...

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

* Re: [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context
  2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
                   ` (26 preceding siblings ...)
  2014-08-26 21:34 ` [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Thomas Gleixner
@ 2014-09-03 13:18 ` Jason Cooper
  27 siblings, 0 replies; 54+ messages in thread
From: Jason Cooper @ 2014-09-03 13:18 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: linux-arm-kernel, linux-kernel, linux-omap, linux, linux,
	shawn.guo, kernel, tony, catalin.marinas, will.deacon, jonas,
	tglx, shc_work, baohua, maxime.ripard, khilman, sboyd,
	lorenzo.pieralisi, larry.bassel, mark.rutland, sudeep.holla,
	stefan.kristiansson, vkale, schwidefsky

On Tue, Aug 26, 2014 at 11:03:15AM +0100, Marc Zyngier wrote:
> A number of irqchip drivers are directly calling irq_find_mapping,
> which may use a rcu_read_lock call when walking the radix tree.
> 
> Turns out that if you hit that point with CONFIG_PROVE_RCU enabled,
> the kernel will shout at you, as using RCU in this context may be
> illegal (specially if coming from the idle state, where RCU would be
> in a quiescent state).
> 
> A possible fix would be to wrap calls to irq_find_mapping into a
> RCU_NONIDLE macro, but that really looks ugly.
> 
> This patch series introduce another generic IRQ entry point
> (handle_domain_irq), which has the exact same behaviour as handle_IRQ
> (as defined on arm, arm64 and openrisc), except that it also takes a
> irq_domain pointer. This allows the logical IRQ lookup to be done
> inside the irq_{enter,exit} section, which contains a
> rcu_irq_{enter,exit}, making it safe.
> 
> A number of irqchips are then converted to this new entry point. I've
> converted all the direct users of irq_find_mapping, except for the
> cases where it was used as a chained handler (chained_irq_{enter,exit}
> makes it safe). Users of irq_linear_revmap are safe as well. I've
> given it some light testing on arm64.
> 
> The series is also available in my tree:
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git handle_domain_irq
> 
> From v1 [1]:
> - Made handle_domain_irq a generic function
> - Added OpenRISC to the list of affected architectures
> - Converted more interrupt controllers
> - Rebased on v3.17-rc1
> 
> [1]: https://lkml.org/lkml/2014/7/8/381
> 
> Marc Zyngier (26):
>   genirq: add irq_domain-aware core IRQ handler
>   arm64: convert handle_IRQ to use __handle_domain_irq
>   ARM: convert handle_IRQ to use __handle_domain_irq
>   openrisc: convert handle_IRQ to use __handle_domain_irq
>   irqchip: GIC: convert to handle_domain_irq
>   irqchip: armada-370-xp: convert to handle_domain_irq
>   irqchip: clps711x: convert to handle_domain_irq
>   irqchip: mmp: convert to handle_domain_irq
>   irqchip: mxs: convert to handle_domain_irq
>   irqchip: orion: convert to handle_domain_irq
>   irqchip: s3c24xx: convert to handle_domain_irq
>   irqchip: sirfsoc: convert to handle_domain_irq
>   irqchip: sun4i: convert to handle_domain_irq
>   irqchip: versatile-fpga: convert to handle_domain_irq
>   irqchip: vic: convert to handle_domain_irq
>   irqchip: vt8500: convert to handle_domain_irq
>   irqchip: zevio: convert to handle_domain_irq
>   irqchip: GICv3: convert to handle_domain_irq
>   irqchip: atmel-aic: convert to handle_domain_irq
>   irqchip: atmel-aic5: convert to handle_domain_irq
>   irqchip: or1k-pic: convert to handle_domain_irq
>   ARM: imx: avic: convert to handle_domain_irq
>   ARM: imx: tzic: convert to handle_domain_irq
>   ARM: omap2: irq: convert to handle_domain_irq
>   arm64: get rid of handle_IRQ
>   openrisc: get rid of handle_IRQ
> 
>  arch/arm/Kconfig                     |  1 +
>  arch/arm/kernel/irq.c                | 19 +---------------
>  arch/arm/mach-imx/avic.c             |  2 +-
>  arch/arm/mach-imx/tzic.c             |  3 +--
>  arch/arm/mach-omap2/irq.c            |  3 +--
>  arch/arm64/Kconfig                   |  1 +
>  arch/arm64/include/asm/hardirq.h     |  2 --
>  arch/arm64/kernel/irq.c              | 27 -----------------------
>  arch/openrisc/Kconfig                |  1 +
>  arch/openrisc/include/asm/irq.h      |  1 -
>  arch/openrisc/kernel/irq.c           | 12 -----------
>  drivers/irqchip/irq-armada-370-xp.c  | 19 ++++++++--------
>  drivers/irqchip/irq-atmel-aic.c      |  4 +---
>  drivers/irqchip/irq-atmel-aic5.c     |  4 +---
>  drivers/irqchip/irq-clps711x.c       | 18 ++++++----------
>  drivers/irqchip/irq-gic-v3.c         | 13 ++++++-----
>  drivers/irqchip/irq-gic.c            |  3 +--
>  drivers/irqchip/irq-mmp.c            | 10 ++++-----
>  drivers/irqchip/irq-mxs.c            |  3 +--
>  drivers/irqchip/irq-or1k-pic.c       |  4 ++--
>  drivers/irqchip/irq-orion.c          |  5 ++---
>  drivers/irqchip/irq-s3c24xx.c        |  4 +---
>  drivers/irqchip/irq-sirfsoc.c        |  6 ++----
>  drivers/irqchip/irq-sun4i.c          |  5 ++---
>  drivers/irqchip/irq-versatile-fpga.c |  2 +-
>  drivers/irqchip/irq-vic.c            |  2 +-
>  drivers/irqchip/irq-vt8500.c         |  5 ++---
>  drivers/irqchip/irq-zevio.c          |  3 +--
>  include/linux/irqdesc.h              | 19 ++++++++++++++++
>  kernel/irq/Kconfig                   |  3 +++
>  kernel/irq/irqdesc.c                 | 42 ++++++++++++++++++++++++++++++++++++
>  31 files changed, 116 insertions(+), 130 deletions(-)

Whole series applied to irqchip/handle_domain with Acks applied and
subject line tweaked for capitalization.  Turns out we have the openrisc
Ack from:

  https://lkml.kernel.org/r/20140827170905.GA5838@chokladfabriken.org

I'll let this sit in -next for a few days and then merge it into
irqchip/core.

thx,

Jason.

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

end of thread, other threads:[~2014-09-03 13:18 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-26 10:03 [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 01/26] genirq: add irq_domain-aware core IRQ handler Marc Zyngier
2014-08-26 17:42   ` Stephen Boyd
2014-08-26 18:07     ` Marc Zyngier
2014-08-26 18:46       ` Stephen Boyd
2014-08-26 19:05         ` Stephen Boyd
2014-09-01 15:22         ` Russell King - ARM Linux
2014-08-26 10:03 ` [PATCH v2 02/26] arm64: convert handle_IRQ to use __handle_domain_irq Marc Zyngier
2014-08-26 16:51   ` Catalin Marinas
2014-08-26 16:58     ` Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 03/26] ARM: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 04/26] openrisc: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 05/26] irqchip: GIC: convert to handle_domain_irq Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 06/26] irqchip: armada-370-xp: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 07/26] irqchip: clps711x: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 08/26] irqchip: mmp: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 09/26] irqchip: mxs: " Marc Zyngier
2014-08-27  6:38   ` Shawn Guo
2014-08-26 10:03 ` [PATCH v2 10/26] irqchip: orion: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 11/26] irqchip: s3c24xx: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 12/26] irqchip: sirfsoc: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 13/26] irqchip: sun4i: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 14/26] irqchip: versatile-fpga: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 15/26] irqchip: vic: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 16/26] irqchip: vt8500: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 17/26] irqchip: zevio: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 18/26] irqchip: GICv3: " Marc Zyngier
2014-08-26 10:03 ` [PATCH v2 19/26] irqchip: atmel-aic: " Marc Zyngier
2014-09-01  9:32   ` Nicolas Ferre
2014-09-01 10:16   ` Boris BREZILLON
2014-08-26 10:03 ` [PATCH v2 20/26] irqchip: atmel-aic5: " Marc Zyngier
2014-09-01  9:33   ` Nicolas Ferre
2014-09-01  9:51   ` Boris BREZILLON
2014-08-26 10:03 ` [PATCH v2 21/26] irqchip: or1k-pic: " Marc Zyngier
2014-08-27 17:09   ` Stefan Kristiansson
2014-08-26 10:03 ` [PATCH v2 22/26] ARM: imx: avic: " Marc Zyngier
2014-08-27  6:40   ` Shawn Guo
2014-08-26 10:03 ` [PATCH v2 23/26] ARM: imx: tzic: " Marc Zyngier
2014-08-27  6:40   ` Shawn Guo
2014-08-26 10:03 ` [PATCH v2 24/26] ARM: omap2: irq: " Marc Zyngier
2014-08-26 20:57   ` Tony Lindgren
2014-08-26 10:03 ` [PATCH v2 25/26] arm64: get rid of handle_IRQ Marc Zyngier
2014-08-26 16:53   ` Catalin Marinas
2014-08-26 10:03 ` [PATCH v2 26/26] openrisc: " Marc Zyngier
2014-08-26 21:34 ` [PATCH v2 00/26] genirq: fix use of irq_find_mapping outside of legal RCU context Thomas Gleixner
2014-08-27  9:33   ` Marc Zyngier
2014-09-03 12:04     ` Jason Cooper
2014-09-03 12:09       ` Thomas Gleixner
2014-09-03 12:21         ` Marc Zyngier
2014-09-03 12:25           ` Thomas Gleixner
2014-09-03 12:37             ` Jason Cooper
2014-09-03 12:40               ` Marc Zyngier
2014-09-03 12:37             ` Marc Zyngier
2014-09-03 13:18 ` Jason Cooper

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).