* [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER
@ 2011-11-04 16:57 Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Marc Zyngier
` (16 more replies)
0 siblings, 17 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
In order to support multiple primary interrupt controllers in the same
image, it is necessary to use the MULTI_IRQ_HANDLER config option.
This patch series makes a first step in that direction by:
- having the GIC code to provides a global handler,
- make GIC users to provide this handler from their machine descriptor.
A side effect of this is that it forces OMAP2/3 platforms to be
converted too in order to preserve the MULTI_OMAP feature. This leads
to a certain simplification of the interrupt handling for the
OMAP2/3/4 platforms.
This series has been tested by myself on VE (A9, A5, A15), PB11MP,
Panda, IGEPv2, Harmony and Origen, as well as on other platforms by
people who tested it. Patches against next-20111104 plus my "ARM: gic:
allow GIC to support non-banked setups" patch.
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 18:30 ` Nicolas Pitre
` (2 more replies)
2011-11-04 16:57 ` [PATCH v3 02/17] ARM: mxc: rename gic_handle_irq to avoid name clash Marc Zyngier
` (15 subsequent siblings)
16 siblings, 3 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Even when CONFIG_MULTI_IRQ_HANDLER is selected, the core code
requires the arch_irq_handler_default macro to be defined as
a fallback.
It turns out nobody is using that particular feature as both PXA
and shmobile have all their machine descriptors populated with
the interrupt handler, leaving unused code (or empty macros) in
their entry-macro.S file just to be able to compile entry-armv.S.
Make CONFIG_MULTI_IRQ_HANDLER exclusive wrt arch_irq_handler_default,
which allows to remove one test from the hot path. Also cleanup both
PXA and shmobile entry-macro.S.
Cc: Eric Miao <eric.y.miao@gmail.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/kernel/entry-armv.S | 7 ++--
arch/arm/mach-pxa/include/mach/entry-macro.S | 36 ---------------------
arch/arm/mach-shmobile/include/mach/entry-macro.S | 9 -----
3 files changed, 3 insertions(+), 49 deletions(-)
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 9ad50c4..bd49a6a 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -36,12 +36,11 @@
#ifdef CONFIG_MULTI_IRQ_HANDLER
ldr r1, =handle_arch_irq
mov r0, sp
- ldr r1, [r1]
adr lr, BSYM(9997f)
- teq r1, #0
- movne pc, r1
-#endif
+ ldr pc, [r1]
+#else
arch_irq_handler_default
+#endif
9997:
.endm
diff --git a/arch/arm/mach-pxa/include/mach/entry-macro.S b/arch/arm/mach-pxa/include/mach/entry-macro.S
index a73bc86..260c0c1 100644
--- a/arch/arm/mach-pxa/include/mach/entry-macro.S
+++ b/arch/arm/mach-pxa/include/mach/entry-macro.S
@@ -7,45 +7,9 @@
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
-#include <mach/hardware.h>
-#include <mach/irqs.h>
.macro disable_fiq
.endm
- .macro get_irqnr_preamble, base, tmp
- .endm
-
.macro arch_ret_to_user, tmp1, tmp2
.endm
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- mrc p15, 0, \tmp, c0, c0, 0 @ CPUID
- mov \tmp, \tmp, lsr #13
- and \tmp, \tmp, #0x7 @ Core G
- cmp \tmp, #1
- bhi 1002f
-
- @ Core Generation 1 (PXA25x)
- mov \base, #io_p2v(0x40000000) @ IIR Ctl = 0x40d00000
- add \base, \base, #0x00d00000
- ldr \irqstat, [\base, #0] @ ICIP
- ldr \irqnr, [\base, #4] @ ICMR
-
- ands \irqnr, \irqstat, \irqnr
- beq 1001f
- rsb \irqstat, \irqnr, #0
- and \irqstat, \irqstat, \irqnr
- clz \irqnr, \irqstat
- rsb \irqnr, \irqnr, #(31 + PXA_IRQ(0))
- b 1001f
-1002:
- @ Core Generation 2 (PXA27x) or Core Generation 3 (PXA3xx)
- mrc p6, 0, \irqstat, c5, c0, 0 @ ICHP
- tst \irqstat, #0x80000000
- beq 1001f
- bic \irqstat, \irqstat, #0x80000000
- mov \irqnr, \irqstat, lsr #16
- add \irqnr, \irqnr, #(PXA_IRQ(0))
-1001:
- .endm
diff --git a/arch/arm/mach-shmobile/include/mach/entry-macro.S b/arch/arm/mach-shmobile/include/mach/entry-macro.S
index 8d4a416..2a57b29 100644
--- a/arch/arm/mach-shmobile/include/mach/entry-macro.S
+++ b/arch/arm/mach-shmobile/include/mach/entry-macro.S
@@ -18,14 +18,5 @@
.macro disable_fiq
.endm
- .macro get_irqnr_preamble, base, tmp
- .endm
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- .endm
-
- .macro test_for_ipi, irqnr, irqstat, base, tmp
- .endm
-
.macro arch_ret_to_user, tmp1, tmp2
.endm
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 02/17] ARM: mxc: rename gic_handle_irq to avoid name clash
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 21:09 ` Shawn Guo
2011-11-04 16:57 ` [PATCH v3 03/17] ARM: GIC: Add global gic_handle_irq() function Marc Zyngier
` (14 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Before introducing a global gic_handle_irq(), rename
MXC's version to mcx_gic_handle_irq(). This function will be
removed altogether in a later patch.
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/plat-mxc/gic.c | 2 +-
arch/arm/plat-mxc/include/mach/common.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/plat-mxc/gic.c b/arch/arm/plat-mxc/gic.c
index 12f8f81..ea51ea4 100644
--- a/arch/arm/plat-mxc/gic.c
+++ b/arch/arm/plat-mxc/gic.c
@@ -18,7 +18,7 @@
#include <asm/smp.h>
#endif
-asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
+asmlinkage void __exception_irq_entry mxc_gic_handle_irq(struct pt_regs *regs)
{
u32 irqstat, irqnr;
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
index 83b745a..f6c13ab 100644
--- a/arch/arm/plat-mxc/include/mach/common.h
+++ b/arch/arm/plat-mxc/include/mach/common.h
@@ -90,7 +90,7 @@ extern void imx_print_silicon_rev(const char *cpu, int srev);
void avic_handle_irq(struct pt_regs *);
void tzic_handle_irq(struct pt_regs *);
-void gic_handle_irq(struct pt_regs *);
+void mxc_gic_handle_irq(struct pt_regs *);
#define imx1_handle_irq avic_handle_irq
#define imx21_handle_irq avic_handle_irq
@@ -101,7 +101,7 @@ void gic_handle_irq(struct pt_regs *);
#define imx50_handle_irq tzic_handle_irq
#define imx51_handle_irq tzic_handle_irq
#define imx53_handle_irq tzic_handle_irq
-#define imx6q_handle_irq gic_handle_irq
+#define imx6q_handle_irq mcx_gic_handle_irq
extern void imx_enable_cpu(int cpu, bool enable);
extern void imx_set_cpu_jump(int cpu, void *jump_addr);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 03/17] ARM: GIC: Add global gic_handle_irq() function
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 02/17] ARM: mxc: rename gic_handle_irq to avoid name clash Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 04/17] ARM: mxc: convert smp platforms to global gic_handle_irq() Marc Zyngier
` (13 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Provide the GIC code with a low level handler that can be used
by platforms using CONFIG_MULTI_IRQ_HANDLER.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/common/gic.c | 27 +++++++++++++++++++++++++++
arch/arm/include/asm/hardware/gic.h | 1 +
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
index 1565fca..2d29d86 100644
--- a/arch/arm/common/gic.c
+++ b/arch/arm/common/gic.c
@@ -40,6 +40,7 @@
#include <linux/slab.h>
#include <asm/irq.h>
+#include <asm/exception.h>
#include <asm/mach/irq.h>
#include <asm/hardware/gic.h>
@@ -242,6 +243,32 @@ static int gic_set_wake(struct irq_data *d, unsigned int on)
#define gic_set_wake NULL
#endif
+asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
+{
+ u32 irqstat, irqnr;
+ struct gic_chip_data *gic = &gic_data[0];
+ void __iomem *cpu_base = gic_data_cpu_base(gic);
+
+ do {
+ irqstat = readl_relaxed(cpu_base + GIC_CPU_INTACK);
+ irqnr = irqstat & ~0x1c00;
+
+ if (likely(irqnr > 15 && irqnr < 1021)) {
+ irqnr = irq_domain_to_irq(&gic->domain, irqnr);
+ handle_IRQ(irqnr, regs);
+ continue;
+ }
+ if (irqnr < 16) {
+ writel_relaxed(irqstat, cpu_base + GIC_CPU_EOI);
+#ifdef CONFIG_SMP
+ handle_IPI(irqnr, regs);
+#endif
+ continue;
+ }
+ break;
+ } while (1);
+}
+
static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
{
struct gic_chip_data *chip_data = irq_get_handler_data(irq);
diff --git a/arch/arm/include/asm/hardware/gic.h b/arch/arm/include/asm/hardware/gic.h
index 729e00b..a38eee2 100644
--- a/arch/arm/include/asm/hardware/gic.h
+++ b/arch/arm/include/asm/hardware/gic.h
@@ -42,6 +42,7 @@ extern struct irq_chip gic_arch_extn;
void gic_init(unsigned int, int, void __iomem *, void __iomem *);
int gic_of_init(struct device_node *node, struct device_node *parent);
void gic_secondary_init_base(unsigned int, void __iomem *, void __iomem *);
+void gic_handle_irq(struct pt_regs *regs);
void gic_cascade_irq(unsigned int gic_nr, unsigned int irq);
void gic_raise_softirq(const struct cpumask *mask, unsigned int irq);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 04/17] ARM: mxc: convert smp platforms to global gic_handle_irq()
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (2 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 03/17] ARM: GIC: Add global gic_handle_irq() function Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 21:15 ` Shawn Guo
2011-11-04 16:57 ` [PATCH v3 05/17] ARM: highbank: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (12 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the SMP shmobile platforms to use the global gic_handle_irq()
function instead a private function.
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/plat-mxc/Makefile | 1 -
arch/arm/plat-mxc/gic.c | 41 --------------------------
arch/arm/plat-mxc/include/mach/common.h | 3 +-
arch/arm/plat-mxc/include/mach/entry-macro.S | 14 ---------
4 files changed, 1 insertions(+), 58 deletions(-)
delete mode 100644 arch/arm/plat-mxc/gic.c
diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile
index b9f0f5f..076db84 100644
--- a/arch/arm/plat-mxc/Makefile
+++ b/arch/arm/plat-mxc/Makefile
@@ -5,7 +5,6 @@
# Common support
obj-y := clock.o time.o devices.o cpu.o system.o irq-common.o
-obj-$(CONFIG_ARM_GIC) += gic.o
obj-$(CONFIG_MXC_TZIC) += tzic.o
obj-$(CONFIG_MXC_AVIC) += avic.o
diff --git a/arch/arm/plat-mxc/gic.c b/arch/arm/plat-mxc/gic.c
deleted file mode 100644
index ea51ea4..0000000
--- a/arch/arm/plat-mxc/gic.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2011 Freescale Semiconductor, Inc.
- * Copyright 2011 Linaro Ltd.
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 or later at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-#include <linux/io.h>
-#include <asm/exception.h>
-#include <asm/localtimer.h>
-#include <asm/hardware/gic.h>
-#ifdef CONFIG_SMP
-#include <asm/smp.h>
-#endif
-
-asmlinkage void __exception_irq_entry mxc_gic_handle_irq(struct pt_regs *regs)
-{
- u32 irqstat, irqnr;
-
- do {
- irqstat = readl_relaxed(gic_cpu_base_addr + GIC_CPU_INTACK);
- irqnr = irqstat & 0x3ff;
- if (irqnr == 1023)
- break;
-
- if (irqnr > 15 && irqnr < 1021)
- handle_IRQ(irqnr, regs);
-#ifdef CONFIG_SMP
- else {
- writel_relaxed(irqstat, gic_cpu_base_addr +
- GIC_CPU_EOI);
- handle_IPI(irqnr, regs);
- }
-#endif
- } while (1);
-}
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
index f6c13ab..14b4703 100644
--- a/arch/arm/plat-mxc/include/mach/common.h
+++ b/arch/arm/plat-mxc/include/mach/common.h
@@ -90,7 +90,6 @@ extern void imx_print_silicon_rev(const char *cpu, int srev);
void avic_handle_irq(struct pt_regs *);
void tzic_handle_irq(struct pt_regs *);
-void mxc_gic_handle_irq(struct pt_regs *);
#define imx1_handle_irq avic_handle_irq
#define imx21_handle_irq avic_handle_irq
@@ -101,7 +100,7 @@ void mxc_gic_handle_irq(struct pt_regs *);
#define imx50_handle_irq tzic_handle_irq
#define imx51_handle_irq tzic_handle_irq
#define imx53_handle_irq tzic_handle_irq
-#define imx6q_handle_irq mcx_gic_handle_irq
+#define imx6q_handle_irq gic_handle_irq
extern void imx_enable_cpu(int cpu, bool enable);
extern void imx_set_cpu_jump(int cpu, void *jump_addr);
diff --git a/arch/arm/plat-mxc/include/mach/entry-macro.S b/arch/arm/plat-mxc/include/mach/entry-macro.S
index 9fe0dfc..def5d30 100644
--- a/arch/arm/plat-mxc/include/mach/entry-macro.S
+++ b/arch/arm/plat-mxc/include/mach/entry-macro.S
@@ -9,22 +9,8 @@
* published by the Free Software Foundation.
*/
-/* Unused, we use CONFIG_MULTI_IRQ_HANDLER */
-
.macro disable_fiq
.endm
- .macro get_irqnr_preamble, base, tmp
- .endm
-
.macro arch_ret_to_user, tmp1, tmp2
.endm
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- .endm
-
- .macro test_for_ipi, irqnr, irqstat, base, tmp
- .endm
-
- .macro test_for_ltirq, irqnr, irqstat, base, tmp
- .endm
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 05/17] ARM: highbank: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (3 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 04/17] ARM: mxc: convert smp platforms to global gic_handle_irq() Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 18:30 ` Rob Herring
2011-11-04 16:57 ` [PATCH v3 06/17] ARM: RealView: " Marc Zyngier
` (11 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the highbank platform to be using the gic_handle_irq
function as its primary interrupt handler.
Cc: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/Kconfig | 1 +
arch/arm/mach-highbank/highbank.c | 1 +
arch/arm/mach-highbank/include/mach/entry-macro.S | 2 --
3 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index c4f13c3..503daf0 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -345,6 +345,7 @@ config ARCH_HIGHBANK
select GENERIC_CLOCKEVENTS
select HAVE_ARM_SCU
select USE_OF
+ select MULTI_IRQ_HANDLER
help
Support for the Calxeda Highbank SoC based boards.
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
index b82dcf0..89bdf00 100644
--- a/arch/arm/mach-highbank/highbank.c
+++ b/arch/arm/mach-highbank/highbank.c
@@ -140,6 +140,7 @@ DT_MACHINE_START(HIGHBANK, "Highbank")
.map_io = highbank_map_io,
.init_irq = highbank_init_irq,
.timer = &highbank_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = highbank_init,
.dt_compat = highbank_match,
MACHINE_END
diff --git a/arch/arm/mach-highbank/include/mach/entry-macro.S b/arch/arm/mach-highbank/include/mach/entry-macro.S
index 73c1129..a14f9e6 100644
--- a/arch/arm/mach-highbank/include/mach/entry-macro.S
+++ b/arch/arm/mach-highbank/include/mach/entry-macro.S
@@ -1,5 +1,3 @@
-#include <asm/hardware/entry-macro-gic.S>
-
.macro disable_fiq
.endm
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 06/17] ARM: RealView: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (4 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 05/17] ARM: highbank: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 07/17] ARM: VExpress: " Marc Zyngier
` (10 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the RealView platforms to be using the gic_handle_irq
function as their primary interrupt handler.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/Kconfig | 1 +
arch/arm/mach-realview/include/mach/entry-macro.S | 2 --
arch/arm/mach-realview/realview_eb.c | 1 +
arch/arm/mach-realview/realview_pb1176.c | 1 +
arch/arm/mach-realview/realview_pb11mp.c | 1 +
arch/arm/mach-realview/realview_pba8.c | 1 +
arch/arm/mach-realview/realview_pbx.c | 1 +
7 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 503daf0..918d466 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -278,6 +278,7 @@ config ARCH_REALVIEW
select ARM_TIMER_SP804
select GPIO_PL061 if GPIOLIB
select NEED_MACH_MEMORY_H
+ select MULTI_IRQ_HANDLER
help
This enables support for ARM Ltd RealView boards.
diff --git a/arch/arm/mach-realview/include/mach/entry-macro.S b/arch/arm/mach-realview/include/mach/entry-macro.S
index 4071164..e8a5179 100644
--- a/arch/arm/mach-realview/include/mach/entry-macro.S
+++ b/arch/arm/mach-realview/include/mach/entry-macro.S
@@ -7,8 +7,6 @@
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
-#include <mach/hardware.h>
-#include <asm/hardware/entry-macro-gic.S>
.macro disable_fiq
.endm
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index 427e44e..f01e332 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -470,6 +470,7 @@ MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
.init_early = realview_init_early,
.init_irq = gic_init_irq,
.timer = &realview_eb_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = realview_eb_init,
#ifdef CONFIG_ZONE_DMA
.dma_zone_size = SZ_256M,
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index ad227c4..d329b37 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -393,6 +393,7 @@ MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
.init_early = realview_init_early,
.init_irq = gic_init_irq,
.timer = &realview_pb1176_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = realview_pb1176_init,
#ifdef CONFIG_ZONE_DMA
.dma_zone_size = SZ_256M,
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index 6cb8318..32d18e5 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -367,6 +367,7 @@ MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
.init_early = realview_init_early,
.init_irq = gic_init_irq,
.timer = &realview_pb11mp_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = realview_pb11mp_init,
#ifdef CONFIG_ZONE_DMA
.dma_zone_size = SZ_256M,
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c
index 3db72c5..0896cc4 100644
--- a/arch/arm/mach-realview/realview_pba8.c
+++ b/arch/arm/mach-realview/realview_pba8.c
@@ -317,6 +317,7 @@ MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
.init_early = realview_init_early,
.init_irq = gic_init_irq,
.timer = &realview_pba8_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = realview_pba8_init,
#ifdef CONFIG_ZONE_DMA
.dma_zone_size = SZ_256M,
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index bea4212..cac0b69 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -400,6 +400,7 @@ MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
.init_early = realview_init_early,
.init_irq = gic_init_irq,
.timer = &realview_pbx_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = realview_pbx_init,
#ifdef CONFIG_ZONE_DMA
.dma_zone_size = SZ_256M,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 07/17] ARM: VExpress: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (5 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 06/17] ARM: RealView: " Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 08/17] ARM: msm: convert SMP platforms " Marc Zyngier
` (9 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the VExpress platform to be using the gic_handle_irq
function as its primary interrupt handler.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/Kconfig | 1 +
arch/arm/mach-vexpress/include/mach/entry-macro.S | 2 --
arch/arm/mach-vexpress/v2m.c | 2 ++
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 918d466..af6e59d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -311,6 +311,7 @@ config ARCH_VEXPRESS
select ICST
select PLAT_VERSATILE
select PLAT_VERSATILE_CLCD
+ select MULTI_IRQ_HANDLER
help
This enables support for the ARM Ltd Versatile Express boards.
diff --git a/arch/arm/mach-vexpress/include/mach/entry-macro.S b/arch/arm/mach-vexpress/include/mach/entry-macro.S
index 73c1129..a14f9e6 100644
--- a/arch/arm/mach-vexpress/include/mach/entry-macro.S
+++ b/arch/arm/mach-vexpress/include/mach/entry-macro.S
@@ -1,5 +1,3 @@
-#include <asm/hardware/entry-macro-gic.S>
-
.macro disable_fiq
.endm
diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
index 47bca2a..d540a1b 100644
--- a/arch/arm/mach-vexpress/v2m.c
+++ b/arch/arm/mach-vexpress/v2m.c
@@ -24,6 +24,7 @@
#include <asm/hardware/arm_timer.h>
#include <asm/hardware/timer-sp.h>
#include <asm/hardware/sp810.h>
+#include <asm/hardware/gic.h>
#include <mach/ct-ca9x4.h>
#include <mach/motherboard.h>
@@ -457,5 +458,6 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express")
.init_early = v2m_init_early,
.init_irq = v2m_init_irq,
.timer = &v2m_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = v2m_init,
MACHINE_END
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 08/17] ARM: msm: convert SMP platforms to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (6 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 07/17] ARM: VExpress: " Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 09/17] ARM: exynos4: convert " Marc Zyngier
` (8 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the SMP msm platforms to be using the gic_handle_irq
function as their primary interrupt handler.
Tested-by: David Brown <davidb@codeaurora.org>
Acked-by: David Brown <davidb@codeaurora.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/mach-msm/Kconfig | 2 +
arch/arm/mach-msm/board-msm8960.c | 2 +
arch/arm/mach-msm/board-msm8x60.c | 4 ++
arch/arm/mach-msm/include/mach/entry-macro-qgic.S | 17 ---------
arch/arm/mach-msm/include/mach/entry-macro-vic.S | 37 ---------------------
arch/arm/mach-msm/include/mach/entry-macro.S | 27 +++++++++++++--
6 files changed, 31 insertions(+), 58 deletions(-)
delete mode 100644 arch/arm/mach-msm/include/mach/entry-macro-qgic.S
delete mode 100644 arch/arm/mach-msm/include/mach/entry-macro-vic.S
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index ebde97f..ba36b74 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -50,6 +50,7 @@ config ARCH_MSM8X60
select GPIO_MSM_V2
select MSM_GPIOMUX
select MSM_SCM if SMP
+ select MULTI_IRQ_HANDLER
config ARCH_MSM8960
bool "MSM8960"
@@ -60,6 +61,7 @@ config ARCH_MSM8960
select MSM_V2_TLMM
select MSM_GPIOMUX
select MSM_SCM if SMP
+ select MULTI_IRQ_HANDLER
endchoice
diff --git a/arch/arm/mach-msm/board-msm8960.c b/arch/arm/mach-msm/board-msm8960.c
index c811e29..7af9a6d 100644
--- a/arch/arm/mach-msm/board-msm8960.c
+++ b/arch/arm/mach-msm/board-msm8960.c
@@ -101,6 +101,7 @@ MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR")
.map_io = msm8960_map_io,
.init_irq = msm8960_init_irq,
.timer = &msm_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = msm8960_sim_init,
MACHINE_END
@@ -111,6 +112,7 @@ MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3")
.map_io = msm8960_map_io,
.init_irq = msm8960_init_irq,
.timer = &msm_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = msm8960_rumi3_init,
MACHINE_END
diff --git a/arch/arm/mach-msm/board-msm8x60.c b/arch/arm/mach-msm/board-msm8x60.c
index fdc8a34..bf5b04d 100644
--- a/arch/arm/mach-msm/board-msm8x60.c
+++ b/arch/arm/mach-msm/board-msm8x60.c
@@ -111,6 +111,7 @@ MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3")
.reserve = msm8x60_reserve,
.map_io = msm8x60_map_io,
.init_irq = msm8x60_init_irq,
+ .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init,
.timer = &msm_timer,
MACHINE_END
@@ -121,6 +122,7 @@ MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF")
.reserve = msm8x60_reserve,
.map_io = msm8x60_map_io,
.init_irq = msm8x60_init_irq,
+ .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init,
.timer = &msm_timer,
MACHINE_END
@@ -131,6 +133,7 @@ MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR")
.reserve = msm8x60_reserve,
.map_io = msm8x60_map_io,
.init_irq = msm8x60_init_irq,
+ .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init,
.timer = &msm_timer,
MACHINE_END
@@ -141,6 +144,7 @@ MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA")
.reserve = msm8x60_reserve,
.map_io = msm8x60_map_io,
.init_irq = msm8x60_init_irq,
+ .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init,
.timer = &msm_timer,
MACHINE_END
diff --git a/arch/arm/mach-msm/include/mach/entry-macro-qgic.S b/arch/arm/mach-msm/include/mach/entry-macro-qgic.S
deleted file mode 100644
index 717076f..0000000
--- a/arch/arm/mach-msm/include/mach/entry-macro-qgic.S
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Low-level IRQ helper macros
- *
- * Copyright (c) 2010, Code Aurora Forum. All rights reserved.
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <asm/hardware/entry-macro-gic.S>
-
- .macro disable_fiq
- .endm
-
- .macro arch_ret_to_user, tmp1, tmp2
- .endm
diff --git a/arch/arm/mach-msm/include/mach/entry-macro-vic.S b/arch/arm/mach-msm/include/mach/entry-macro-vic.S
deleted file mode 100644
index 70563ed..0000000
--- a/arch/arm/mach-msm/include/mach/entry-macro-vic.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2007 Google, Inc.
- * Author: Brian Swetland <swetland@google.com>
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-
-#include <mach/msm_iomap.h>
-
- .macro disable_fiq
- .endm
-
- .macro get_irqnr_preamble, base, tmp
- @ enable imprecise aborts
- cpsie a
- mov \base, #MSM_VIC_BASE
- .endm
-
- .macro arch_ret_to_user, tmp1, tmp2
- .endm
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- @ 0xD0 has irq# or old irq# if the irq has been handled
- @ 0xD4 has irq# or -1 if none pending *but* if you just
- @ read 0xD4 you never get the first irq for some reason
- ldr \irqnr, [\base, #0xD0]
- ldr \irqnr, [\base, #0xD4]
- cmp \irqnr, #0xffffffff
- .endm
diff --git a/arch/arm/mach-msm/include/mach/entry-macro.S b/arch/arm/mach-msm/include/mach/entry-macro.S
index b16f082..41f7003 100644
--- a/arch/arm/mach-msm/include/mach/entry-macro.S
+++ b/arch/arm/mach-msm/include/mach/entry-macro.S
@@ -16,8 +16,27 @@
*
*/
-#if defined(CONFIG_ARM_GIC)
-#include <mach/entry-macro-qgic.S>
-#else
-#include <mach/entry-macro-vic.S>
+ .macro disable_fiq
+ .endm
+
+ .macro arch_ret_to_user, tmp1, tmp2
+ .endm
+
+#if !defined(CONFIG_ARM_GIC)
+#include <mach/msm_iomap.h>
+
+ .macro get_irqnr_preamble, base, tmp
+ @ enable imprecise aborts
+ cpsie a
+ mov \base, #MSM_VIC_BASE
+ .endm
+
+ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
+ @ 0xD0 has irq# or old irq# if the irq has been handled
+ @ 0xD4 has irq# or -1 if none pending *but* if you just
+ @ read 0xD4 you never get the first irq for some reason
+ ldr \irqnr, [\base, #0xD0]
+ ldr \irqnr, [\base, #0xD4]
+ cmp \irqnr, #0xffffffff
+ .endm
#endif
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 09/17] ARM: exynos4: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (7 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 08/17] ARM: msm: convert SMP platforms " Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 10/17] ARM: tegra2: " Marc Zyngier
` (7 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the Exynos4 platforms to be using the gic_handle_irq
function as their primary interrupt handler.
Cc: Ben Dooks <ben-linux@fluff.org>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/Kconfig | 1 +
arch/arm/mach-exynos4/cpu.c | 1 +
arch/arm/mach-exynos4/include/mach/entry-macro.S | 74 ----------------------
arch/arm/mach-exynos4/mach-armlex4210.c | 2 +
arch/arm/mach-exynos4/mach-nuri.c | 2 +
arch/arm/mach-exynos4/mach-origen.c | 2 +
arch/arm/mach-exynos4/mach-smdk4x12.c | 3 +
arch/arm/mach-exynos4/mach-smdkv310.c | 3 +
arch/arm/mach-exynos4/mach-universal_c210.c | 2 +
9 files changed, 16 insertions(+), 74 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index af6e59d..605e897 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -855,6 +855,7 @@ config ARCH_EXYNOS4
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select NEED_MACH_MEMORY_H
+ select MULTI_IRQ_HANDLER
help
Samsung EXYNOS4 series based systems
diff --git a/arch/arm/mach-exynos4/cpu.c b/arch/arm/mach-exynos4/cpu.c
index b57b905..567a4c1 100644
--- a/arch/arm/mach-exynos4/cpu.c
+++ b/arch/arm/mach-exynos4/cpu.c
@@ -17,6 +17,7 @@
#include <asm/mach/irq.h>
#include <asm/proc-fns.h>
+#include <asm/exception.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/hardware/gic.h>
diff --git a/arch/arm/mach-exynos4/include/mach/entry-macro.S b/arch/arm/mach-exynos4/include/mach/entry-macro.S
index d7dfcd7..3ba4f54 100644
--- a/arch/arm/mach-exynos4/include/mach/entry-macro.S
+++ b/arch/arm/mach-exynos4/include/mach/entry-macro.S
@@ -9,82 +9,8 @@
* warranty of any kind, whether express or implied.
*/
-#include <mach/hardware.h>
-#include <mach/map.h>
-#include <asm/hardware/gic.h>
-
.macro disable_fiq
.endm
- .macro get_irqnr_preamble, base, tmp
- mov \tmp, #0
-
- mrc p15, 0, \base, c0, c0, 5
- and \base, \base, #3
- cmp \base, #0
- beq 1f
-
- ldr \tmp, =gic_bank_offset
- ldr \tmp, [\tmp]
- cmp \base, #1
- beq 1f
-
- cmp \base, #2
- addeq \tmp, \tmp, \tmp
- addne \tmp, \tmp, \tmp, LSL #1
-
-1: ldr \base, =gic_cpu_base_addr
- ldr \base, [\base]
- add \base, \base, \tmp
- .endm
-
.macro arch_ret_to_user, tmp1, tmp2
.endm
-
- /*
- * The interrupt numbering scheme is defined in the
- * interrupt controller spec. To wit:
- *
- * Interrupts 0-15 are IPI
- * 16-28 are reserved
- * 29-31 are local. We allow 30 to be used for the watchdog.
- * 32-1020 are global
- * 1021-1022 are reserved
- * 1023 is "spurious" (no interrupt)
- *
- * For now, we ignore all local interrupts so only return an interrupt if it's
- * between 30 and 1020. The test_for_ipi routine below will pick up on IPIs.
- *
- * A simple read from the controller will tell us the number of the highest
- * priority enabled interrupt. We then just need to check whether it is in the
- * valid range for an IRQ (30-1020 inclusive).
- */
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
-
- ldr \irqstat, [\base, #GIC_CPU_INTACK] /* bits 12-10 = src CPU, 9-0 = int # */
-
- ldr \tmp, =1021
-
- bic \irqnr, \irqstat, #0x1c00
-
- cmp \irqnr, #15
- cmpcc \irqnr, \irqnr
- cmpne \irqnr, \tmp
- cmpcs \irqnr, \irqnr
-
- .endm
-
- /* We assume that irqstat (the raw value of the IRQ acknowledge
- * register) is preserved from the macro above.
- * If there is an IPI, we immediately signal end of interrupt on the
- * controller, since this requires the original irqstat value which
- * we won't easily be able to recreate later.
- */
-
- .macro test_for_ipi, irqnr, irqstat, base, tmp
- bic \irqnr, \irqstat, #0x1c00
- cmp \irqnr, #16
- strcc \irqstat, [\base, #GIC_CPU_EOI]
- cmpcs \irqnr, \irqnr
- .endm
diff --git a/arch/arm/mach-exynos4/mach-armlex4210.c b/arch/arm/mach-exynos4/mach-armlex4210.c
index 8c82c6b..2fdcc9d 100644
--- a/arch/arm/mach-exynos4/mach-armlex4210.c
+++ b/arch/arm/mach-exynos4/mach-armlex4210.c
@@ -16,6 +16,7 @@
#include <linux/smsc911x.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <plat/cpu.h>
@@ -213,6 +214,7 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")
.soc = &exynos4_soc_desc,
.init_irq = exynos4_init_irq,
.map_io = armlex4210_map_io,
+ .handle_irq = gic_handle_irq,
.init_machine = armlex4210_machine_init,
.timer = &exynos4_timer,
MACHINE_END
diff --git a/arch/arm/mach-exynos4/mach-nuri.c b/arch/arm/mach-exynos4/mach-nuri.c
index f6eb7a4..6fddafa 100644
--- a/arch/arm/mach-exynos4/mach-nuri.c
+++ b/arch/arm/mach-exynos4/mach-nuri.c
@@ -32,6 +32,7 @@
#include <media/v4l2-mediabus.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <plat/adc.h>
@@ -1336,6 +1337,7 @@ MACHINE_START(NURI, "NURI")
.soc = &exynos4_soc_desc,
.init_irq = exynos4_init_irq,
.map_io = nuri_map_io,
+ .handle_irq = gic_handle_irq,
.init_machine = nuri_machine_init,
.timer = &exynos4_timer,
.reserve = &nuri_reserve,
diff --git a/arch/arm/mach-exynos4/mach-origen.c b/arch/arm/mach-exynos4/mach-origen.c
index b643584..192bffd 100644
--- a/arch/arm/mach-exynos4/mach-origen.c
+++ b/arch/arm/mach-exynos4/mach-origen.c
@@ -22,6 +22,7 @@
#include <linux/lcd.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <video/platform_lcd.h>
@@ -697,6 +698,7 @@ MACHINE_START(ORIGEN, "ORIGEN")
.soc = &exynos4_soc_desc,
.init_irq = exynos4_init_irq,
.map_io = origen_map_io,
+ .handle_irq = gic_handle_irq,
.init_machine = origen_machine_init,
.timer = &exynos4_timer,
.reserve = &origen_reserve,
diff --git a/arch/arm/mach-exynos4/mach-smdk4x12.c b/arch/arm/mach-exynos4/mach-smdk4x12.c
index 052b2cb..9e7e8a2 100644
--- a/arch/arm/mach-exynos4/mach-smdk4x12.c
+++ b/arch/arm/mach-exynos4/mach-smdk4x12.c
@@ -21,6 +21,7 @@
#include <linux/serial_core.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <plat/backlight.h>
@@ -290,6 +291,7 @@ MACHINE_START(SMDK4212, "SMDK4212")
.soc = &exynos4_soc_desc,
.init_irq = exynos4_init_irq,
.map_io = smdk4x12_map_io,
+ .handle_irq = gic_handle_irq,
.init_machine = smdk4x12_machine_init,
.timer = &exynos4_timer,
MACHINE_END
@@ -302,5 +304,6 @@ MACHINE_START(SMDK4412, "SMDK4412")
.init_irq = exynos4_init_irq,
.map_io = smdk4x12_map_io,
.init_machine = smdk4x12_machine_init,
+ .handle_irq = gic_handle_irq,
.timer = &exynos4_timer,
MACHINE_END
diff --git a/arch/arm/mach-exynos4/mach-smdkv310.c b/arch/arm/mach-exynos4/mach-smdkv310.c
index 525b042..6b49dbe 100644
--- a/arch/arm/mach-exynos4/mach-smdkv310.c
+++ b/arch/arm/mach-exynos4/mach-smdkv310.c
@@ -21,6 +21,7 @@
#include <linux/pwm_backlight.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <video/platform_lcd.h>
@@ -378,6 +379,7 @@ MACHINE_START(SMDKV310, "SMDKV310")
.soc = &exynos4_soc_desc,
.init_irq = exynos4_init_irq,
.map_io = smdkv310_map_io,
+ .handle_irq = gic_handle_irq,
.init_machine = smdkv310_machine_init,
.timer = &exynos4_timer,
.reserve = &smdkv310_reserve,
@@ -389,6 +391,7 @@ MACHINE_START(SMDKC210, "SMDKC210")
.soc = &exynos4_soc_desc,
.init_irq = exynos4_init_irq,
.map_io = smdkv310_map_io,
+ .handle_irq = gic_handle_irq,
.init_machine = smdkv310_machine_init,
.timer = &exynos4_timer,
MACHINE_END
diff --git a/arch/arm/mach-exynos4/mach-universal_c210.c b/arch/arm/mach-exynos4/mach-universal_c210.c
index 1bdb4c2..4e50b13 100644
--- a/arch/arm/mach-exynos4/mach-universal_c210.c
+++ b/arch/arm/mach-exynos4/mach-universal_c210.c
@@ -24,6 +24,7 @@
#include <linux/i2c/atmel_mxt_ts.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <plat/regs-serial.h>
@@ -1061,6 +1062,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
.soc = &exynos4_soc_desc,
.init_irq = exynos4_init_irq,
.map_io = universal_map_io,
+ .handle_irq = gic_handle_irq,
.init_machine = universal_machine_init,
.timer = &exynos4_timer,
.reserve = &universal_reserve,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 10/17] ARM: tegra2: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (8 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 09/17] ARM: exynos4: convert " Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 19:48 ` Olof Johansson
2011-11-04 16:57 ` [PATCH v3 11/17] ARM: ux500: " Marc Zyngier
` (6 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the tegra2 platforms to be using the gic_handle_irq
function as their primary interrupt handler.
Tested on harmony.
Cc: Colin Cross <ccross@android.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/mach-tegra/Kconfig | 1 +
arch/arm/mach-tegra/board-dt.c | 2 ++
arch/arm/mach-tegra/board-harmony.c | 2 ++
arch/arm/mach-tegra/board-paz00.c | 2 ++
arch/arm/mach-tegra/board-seaboard.c | 4 ++++
arch/arm/mach-tegra/board-trimslice.c | 2 ++
arch/arm/mach-tegra/include/mach/entry-macro.S | 22 ++--------------------
7 files changed, 15 insertions(+), 20 deletions(-)
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 91aff7c..a6faa50 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -13,6 +13,7 @@ config ARCH_TEGRA_2x_SOC
select USB_ARCH_HAS_EHCI if USB_SUPPORT
select USB_ULPI if USB_SUPPORT
select USB_ULPI_VIEWPORT if USB_SUPPORT
+ select MULTI_IRQ_HANDLER
help
Support for NVIDIA Tegra AP20 and T20 processors, based on the
ARM CortexA9MP CPU and the ARM PL310 L2 cache controller
diff --git a/arch/arm/mach-tegra/board-dt.c b/arch/arm/mach-tegra/board-dt.c
index 580dd73..c001e96 100644
--- a/arch/arm/mach-tegra/board-dt.c
+++ b/arch/arm/mach-tegra/board-dt.c
@@ -32,6 +32,7 @@
#include <linux/i2c.h>
#include <linux/i2c-tegra.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
@@ -131,6 +132,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra (Flattened Device Tree)")
.soc = &tegra_soc_desc,
.init_early = tegra_init_early,
.init_irq = tegra_init_irq,
+ .handle_irq = gic_handle_irq,
.timer = &tegra_timer,
.init_machine = tegra_dt_init,
.dt_compat = tegra_dt_board_compat,
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c
index f2ef94f..eb65d68 100644
--- a/arch/arm/mach-tegra/board-harmony.c
+++ b/arch/arm/mach-tegra/board-harmony.c
@@ -31,6 +31,7 @@
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
+#include <asm/hardware/gic.h>
#include <asm/setup.h>
#include <mach/tegra_wm8903_pdata.h>
@@ -189,6 +190,7 @@ MACHINE_START(HARMONY, "harmony")
.map_io = tegra_map_common_io,
.init_early = tegra_init_early,
.init_irq = tegra_init_irq,
+ .handle_irq = gic_handle_irq,
.timer = &tegra_timer,
.init_machine = tegra_harmony_init,
MACHINE_END
diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c
index 8d1f7bf..bece14a 100644
--- a/arch/arm/mach-tegra/board-paz00.c
+++ b/arch/arm/mach-tegra/board-paz00.c
@@ -29,6 +29,7 @@
#include <linux/gpio.h>
#include <linux/rfkill-gpio.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
@@ -192,6 +193,7 @@ MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ")
.map_io = tegra_map_common_io,
.init_early = tegra_init_early,
.init_irq = tegra_init_irq,
+ .handle_irq = gic_handle_irq,
.timer = &tegra_timer,
.init_machine = tegra_paz00_init,
MACHINE_END
diff --git a/arch/arm/mach-tegra/board-seaboard.c b/arch/arm/mach-tegra/board-seaboard.c
index dfd9c95..7fd71cf 100644
--- a/arch/arm/mach-tegra/board-seaboard.c
+++ b/arch/arm/mach-tegra/board-seaboard.c
@@ -34,6 +34,7 @@
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include "board.h"
#include "board-seaboard.h"
@@ -286,6 +287,7 @@ MACHINE_START(SEABOARD, "seaboard")
.map_io = tegra_map_common_io,
.init_early = tegra_init_early,
.init_irq = tegra_init_irq,
+ .handle_irq = gic_handle_irq,
.timer = &tegra_timer,
.init_machine = tegra_seaboard_init,
MACHINE_END
@@ -296,6 +298,7 @@ MACHINE_START(KAEN, "kaen")
.map_io = tegra_map_common_io,
.init_early = tegra_init_early,
.init_irq = tegra_init_irq,
+ .handle_irq = gic_handle_irq,
.timer = &tegra_timer,
.init_machine = tegra_kaen_init,
MACHINE_END
@@ -306,6 +309,7 @@ MACHINE_START(WARIO, "wario")
.map_io = tegra_map_common_io,
.init_early = tegra_init_early,
.init_irq = tegra_init_irq,
+ .handle_irq = gic_handle_irq,
.timer = &tegra_timer,
.init_machine = tegra_wario_init,
MACHINE_END
diff --git a/arch/arm/mach-tegra/board-trimslice.c b/arch/arm/mach-tegra/board-trimslice.c
index 3e76f4a..74c4dea 100644
--- a/arch/arm/mach-tegra/board-trimslice.c
+++ b/arch/arm/mach-tegra/board-trimslice.c
@@ -26,6 +26,7 @@
#include <linux/i2c.h>
#include <linux/gpio.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/setup.h>
@@ -178,6 +179,7 @@ MACHINE_START(TRIMSLICE, "trimslice")
.map_io = tegra_map_common_io,
.init_early = tegra_init_early,
.init_irq = tegra_init_irq,
+ .handle_irq = gic_handle_irq,
.timer = &tegra_timer,
.init_machine = tegra_trimslice_init,
MACHINE_END
diff --git a/arch/arm/mach-tegra/include/mach/entry-macro.S b/arch/arm/mach-tegra/include/mach/entry-macro.S
index dd165c5..ac11262 100644
--- a/arch/arm/mach-tegra/include/mach/entry-macro.S
+++ b/arch/arm/mach-tegra/include/mach/entry-macro.S
@@ -12,30 +12,15 @@
* GNU General Public License for more details.
*
*/
-#include <mach/iomap.h>
-#include <mach/io.h>
-
-#if defined(CONFIG_ARM_GIC)
-#define HAVE_GET_IRQNR_PREAMBLE
-#include <asm/hardware/entry-macro-gic.S>
-
- /* Uses the GIC interrupt controller built into the cpu */
-#define ICTRL_BASE (IO_CPU_VIRT + 0x100)
.macro disable_fiq
.endm
- .macro get_irqnr_preamble, base, tmp
- movw \base, #(ICTRL_BASE & 0x0000ffff)
- movt \base, #((ICTRL_BASE & 0xffff0000) >> 16)
+ .macro arch_ret_to_user, tmp1, tmp2
.endm
- .macro arch_ret_to_user, tmp1, tmp2
- .endm
-#else
+#if !defined(CONFIG_ARM_GIC)
/* legacy interrupt controller for AP16 */
- .macro disable_fiq
- .endm
.macro get_irqnr_preamble, base, tmp
@ enable imprecise aborts
@@ -46,9 +31,6 @@
orr \base, #0x0000f000
.endm
- .macro arch_ret_to_user, tmp1, tmp2
- .endm
-
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
ldr \irqnr, [\base, #0x20] @ EVT_IRQ_STS
cmp \irqnr, #0x80
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 11/17] ARM: ux500: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (9 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 10/17] ARM: tegra2: " Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 12/17] ARM: shmobile: convert smp platforms to gic_handle_irq() Marc Zyngier
` (5 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the ux500 platforms to be using the gic_handle_irq
function as their primary interrupt handler.
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/mach-ux500/Kconfig | 1 +
arch/arm/mach-ux500/board-mop500.c | 4 ++++
arch/arm/mach-ux500/board-u5500.c | 2 ++
arch/arm/mach-ux500/include/mach/entry-macro.S | 2 --
4 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig
index a3e0c86..bb2b52b 100644
--- a/arch/arm/mach-ux500/Kconfig
+++ b/arch/arm/mach-ux500/Kconfig
@@ -7,6 +7,7 @@ config UX500_SOC_COMMON
select HAS_MTU
select ARM_ERRATA_753970
select ARM_ERRATA_754322
+ select MULTI_IRQ_HANDLER
menu "Ux500 SoC"
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index f0b1a00..2539b0b 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -33,6 +33,7 @@
#include <linux/leds.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
+#include <asm/hardware/gic.h>
#include <plat/i2c.h>
#include <plat/ste_dma40.h>
@@ -696,6 +697,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
.init_irq = ux500_init_irq,
/* we re-use nomadik timer here */
.timer = &ux500_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = mop500_init_machine,
MACHINE_END
@@ -705,6 +707,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
.map_io = u8500_map_io,
.init_irq = ux500_init_irq,
.timer = &ux500_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = hrefv60_init_machine,
MACHINE_END
@@ -715,5 +718,6 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
.init_irq = ux500_init_irq,
/* we re-use nomadik timer here */
.timer = &ux500_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = snowball_init_machine,
MACHINE_END
diff --git a/arch/arm/mach-ux500/board-u5500.c b/arch/arm/mach-ux500/board-u5500.c
index aeb125a..2141658 100644
--- a/arch/arm/mach-ux500/board-u5500.c
+++ b/arch/arm/mach-ux500/board-u5500.c
@@ -12,6 +12,7 @@
#include <linux/i2c.h>
#include <linux/mfd/ab5500/ab5500.h>
+#include <asm/hardware/gic.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
@@ -150,5 +151,6 @@ MACHINE_START(U5500, "ST-Ericsson U5500 Platform")
.map_io = u5500_map_io,
.init_irq = ux500_init_irq,
.timer = &ux500_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = u5500_init_machine,
MACHINE_END
diff --git a/arch/arm/mach-ux500/include/mach/entry-macro.S b/arch/arm/mach-ux500/include/mach/entry-macro.S
index 071bba9..e16299e 100644
--- a/arch/arm/mach-ux500/include/mach/entry-macro.S
+++ b/arch/arm/mach-ux500/include/mach/entry-macro.S
@@ -10,8 +10,6 @@
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
-#include <mach/hardware.h>
-#include <asm/hardware/entry-macro-gic.S>
.macro disable_fiq
.endm
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 12/17] ARM: shmobile: convert smp platforms to gic_handle_irq()
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (10 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 11/17] ARM: ux500: " Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 13/17] ARM: cns3xxx: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (4 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the SMP shmobile platforms to use gic_handle_irq() instead
of the assembly macro.
Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/mach-shmobile/Makefile | 1 -
arch/arm/mach-shmobile/board-ag5evm.c | 2 +-
arch/arm/mach-shmobile/entry-gic.S | 18 ------------------
arch/arm/mach-shmobile/include/mach/common.h | 1 -
4 files changed, 1 insertions(+), 21 deletions(-)
delete mode 100644 arch/arm/mach-shmobile/entry-gic.S
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile
index 43754f3..38fdbf2 100644
--- a/arch/arm/mach-shmobile/Makefile
+++ b/arch/arm/mach-shmobile/Makefile
@@ -28,7 +28,6 @@ pfc-$(CONFIG_ARCH_SH73A0) += pfc-sh73a0.o
obj-$(CONFIG_ARCH_SH7367) += entry-intc.o
obj-$(CONFIG_ARCH_SH7377) += entry-intc.o
obj-$(CONFIG_ARCH_SH7372) += entry-intc.o
-obj-$(CONFIG_ARCH_SH73A0) += entry-gic.o
# PM objects
obj-$(CONFIG_SUSPEND) += suspend.o
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c
index 448f51a..06483e4 100644
--- a/arch/arm/mach-shmobile/board-ag5evm.c
+++ b/arch/arm/mach-shmobile/board-ag5evm.c
@@ -603,7 +603,7 @@ MACHINE_START(AG5EVM, "ag5evm")
.map_io = ag5evm_map_io,
.soc = &sh73a0_soc_desc,
.init_irq = ag5evm_init_irq,
- .handle_irq = shmobile_handle_irq_gic,
+ .handle_irq = gic_handle_irq,
.init_machine = ag5evm_init,
.timer = &ag5evm_timer,
MACHINE_END
diff --git a/arch/arm/mach-shmobile/entry-gic.S b/arch/arm/mach-shmobile/entry-gic.S
deleted file mode 100644
index e20239b..0000000
--- a/arch/arm/mach-shmobile/entry-gic.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * ARM Interrupt demux handler using GIC
- *
- * Copyright (C) 2010 Magnus Damm
- * Copyright (C) 2011 Paul Mundt
- * Copyright (C) 2010 - 2011 Renesas Solutions Corp.
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <asm/assembler.h>
-#include <asm/entry-macro-multi.S>
-#include <asm/hardware/gic.h>
-#include <asm/hardware/entry-macro-gic.S>
-
- arch_irq_handler shmobile_handle_irq_gic
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h
index 2283521..04856a3 100644
--- a/arch/arm/mach-shmobile/include/mach/common.h
+++ b/arch/arm/mach-shmobile/include/mach/common.h
@@ -7,7 +7,6 @@ extern void shmobile_secondary_vector(void);
struct clk;
extern int clk_init(void);
extern void shmobile_handle_irq_intc(struct pt_regs *);
-extern void shmobile_handle_irq_gic(struct pt_regs *);
extern struct platform_suspend_ops shmobile_suspend_ops;
struct cpuidle_device;
extern void (*shmobile_cpuidle_modes[])(void);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 13/17] ARM: cns3xxx: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (11 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 12/17] ARM: shmobile: convert smp platforms to gic_handle_irq() Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 14/17] ARM: zynq: " Marc Zyngier
` (3 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the cns3xxx platform to be using the gic_handle_irq
function as its primary interrupt handler.
Acked-by: Anton Vorontsov <cbouatmailru@gmail.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/Kconfig | 1 +
arch/arm/mach-cns3xxx/cns3420vb.c | 2 ++
arch/arm/mach-cns3xxx/include/mach/entry-macro.S | 2 --
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 605e897..e38be77 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -366,6 +366,7 @@ config ARCH_CNS3XXX
select ARM_GIC
select MIGHT_HAVE_PCI
select PCI_DOMAINS if PCI
+ select MULTI_IRQ_HANDLER
help
Support for Cavium Networks CNS3XXX platform.
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c
index 55f7b4b..594852f 100644
--- a/arch/arm/mach-cns3xxx/cns3420vb.c
+++ b/arch/arm/mach-cns3xxx/cns3420vb.c
@@ -26,6 +26,7 @@
#include <linux/mtd/partitions.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
+#include <asm/hardware/gic.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>
@@ -201,5 +202,6 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")
.map_io = cns3420_map_io,
.init_irq = cns3xxx_init_irq,
.timer = &cns3xxx_timer,
+ .handle_irq = gic_handle_irq,
.init_machine = cns3420_init,
MACHINE_END
diff --git a/arch/arm/mach-cns3xxx/include/mach/entry-macro.S b/arch/arm/mach-cns3xxx/include/mach/entry-macro.S
index d87bfc3..01c57df 100644
--- a/arch/arm/mach-cns3xxx/include/mach/entry-macro.S
+++ b/arch/arm/mach-cns3xxx/include/mach/entry-macro.S
@@ -8,8 +8,6 @@
* published by the Free Software Foundation.
*/
-#include <asm/hardware/entry-macro-gic.S>
-
.macro disable_fiq
.endm
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 14/17] ARM: zynq: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (12 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 13/17] ARM: cns3xxx: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 15/17] ARM: omap2/3: Add global omap2/3_intc_handle_irq() functions Marc Zyngier
` (2 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the zynq platform to be using the gic_handle_irq
function as its primary interrupt handler.
Acked-by: John Linn <john.linn@xilinx.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/Kconfig | 1 +
arch/arm/mach-zynq/common.c | 1 +
arch/arm/mach-zynq/include/mach/entry-macro.S | 3 ---
3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index e38be77..a3bcccc 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -980,6 +980,7 @@ config ARCH_ZYNQ
select ARM_AMBA
select ICST
select USE_OF
+ select MULTI_IRQ_HANDLER
help
Support for Xilinx Zynq ARM Cortex A9 Platform
endchoice
diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c
index 73e9368..ab5cfdd 100644
--- a/arch/arm/mach-zynq/common.c
+++ b/arch/arm/mach-zynq/common.c
@@ -112,6 +112,7 @@ static const char *xilinx_dt_match[] = {
MACHINE_START(XILINX_EP107, "Xilinx Zynq Platform")
.map_io = xilinx_map_io,
.init_irq = xilinx_irq_init,
+ .handle_irq = gic_handle_irq,
.init_machine = xilinx_init_machine,
.timer = &xttcpss_sys_timer,
.dt_compat = xilinx_dt_match,
diff --git a/arch/arm/mach-zynq/include/mach/entry-macro.S b/arch/arm/mach-zynq/include/mach/entry-macro.S
index 3cfc01b..d621fb7 100644
--- a/arch/arm/mach-zynq/include/mach/entry-macro.S
+++ b/arch/arm/mach-zynq/include/mach/entry-macro.S
@@ -20,9 +20,6 @@
* GNU General Public License for more details.
*/
-#include <mach/hardware.h>
-#include <asm/hardware/entry-macro-gic.S>
-
.macro disable_fiq
.endm
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 15/17] ARM: omap2/3: Add global omap2/3_intc_handle_irq() functions
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (13 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 14/17] ARM: zynq: " Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 16/17] ARM: omap2plus: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 17/17] ARM: GIC: Make MULTI_IRQ_HANDLER mandatory Marc Zyngier
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Provide the OMAP2/3 IRQ code with low level handlers that can be used
by platforms using CONFIG_MULTI_IRQ_HANDLER. Though the handlers are
written in C, the compiled code looks very similar to its assembly
counterpart (at least with my gcc 4.4.1).
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/mach-omap2/irq.c | 50 ++++++++++++++++++++++++++++++++
arch/arm/plat-omap/include/plat/irqs.h | 2 +
2 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index 65f1be6..ec52bee 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -15,6 +15,7 @@
#include <linux/interrupt.h>
#include <linux/io.h>
#include <mach/hardware.h>
+#include <asm/exception.h>
#include <asm/mach/irq.h>
@@ -35,6 +36,11 @@
/* Number of IRQ state bits in each MIR register */
#define IRQ_BITS_PER_REG 32
+#define OMAP2_IRQ_BASE OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE)
+#define OMAP3_IRQ_BASE OMAP2_L4_IO_ADDRESS(OMAP34XX_IC_BASE)
+#define INTCPS_SIR_IRQ_OFFSET 0x0040 /* omap2/3 active interrupt offset */
+#define ACTIVEIRQ_MASK 0x7f /* omap2/3 active interrupt bits */
+
/*
* OMAP2 has a number of different interrupt controllers, each interrupt
* controller is identified as its own "bank". Register definitions are
@@ -191,6 +197,44 @@ void __init ti816x_init_irq(void)
omap_init_irq(OMAP34XX_IC_BASE, 128);
}
+static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs)
+{
+ u32 irqnr;
+
+ do {
+ irqnr = readl_relaxed(base_addr + 0x98);
+ if (irqnr)
+ goto out;
+
+ irqnr = readl_relaxed(base_addr + 0xb8);
+ if (irqnr)
+ goto out;
+
+ irqnr = readl_relaxed(base_addr + 0xd8);
+#ifdef CONFIG_SOC_OMAPTI816X
+ if (irqnr)
+ goto out;
+ irqnr = readl_relaxed(base_addr + 0xf8);
+#endif
+
+out:
+ if (!irqnr)
+ break;
+
+ irqnr = readl_relaxed(base_addr + INTCPS_SIR_IRQ_OFFSET);
+ irqnr &= ACTIVEIRQ_MASK;
+
+ if (irqnr)
+ handle_IRQ(irqnr, regs);
+ } while (irqnr);
+}
+
+asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs)
+{
+ void __iomem *base_addr = OMAP2_IRQ_BASE;
+ omap_intc_handle_irq(base_addr, regs);
+}
+
#ifdef CONFIG_ARCH_OMAP3
static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)];
@@ -263,4 +307,10 @@ void omap3_intc_resume_idle(void)
/* Re-enable autoidle */
intc_bank_write_reg(1, &irq_banks[0], INTC_SYSCONFIG);
}
+
+asmlinkage void __exception_irq_entry omap3_intc_handle_irq(struct pt_regs *regs)
+{
+ void __iomem *base_addr = OMAP3_IRQ_BASE;
+ omap_intc_handle_irq(base_addr, regs);
+}
#endif /* CONFIG_ARCH_OMAP3 */
diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h
index 30e1071..8b19a63 100644
--- a/arch/arm/plat-omap/include/plat/irqs.h
+++ b/arch/arm/plat-omap/include/plat/irqs.h
@@ -448,6 +448,8 @@ void omap_intc_restore_context(void);
void omap3_intc_suspend(void);
void omap3_intc_prepare_idle(void);
void omap3_intc_resume_idle(void);
+void omap2_intc_handle_irq(struct pt_regs *regs);
+void omap3_intc_handle_irq(struct pt_regs *regs);
#endif
#include <mach/hardware.h>
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 16/17] ARM: omap2plus: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (14 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 15/17] ARM: omap2/3: Add global omap2/3_intc_handle_irq() functions Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 17/17] ARM: GIC: Make MULTI_IRQ_HANDLER mandatory Marc Zyngier
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Convert the omap2plus platforms to be using CONFIG_MULTI_IRQ_HANDLER.
Each machine is modified to provide either omap2_intc_handle_irq(),
omap3_intc_handle_irq() or gic_handle_irq().
This allows for a major cleanup, removing the MULTI_OMAP setup
from the interrupt path.
Tested on both Panda and IGEPv2 (single kernel image)
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/mach-omap2/Kconfig | 1 +
arch/arm/mach-omap2/board-2430sdp.c | 1 +
arch/arm/mach-omap2/board-3430sdp.c | 1 +
arch/arm/mach-omap2/board-3630sdp.c | 1 +
arch/arm/mach-omap2/board-4430sdp.c | 2 +
arch/arm/mach-omap2/board-am3517crane.c | 1 +
arch/arm/mach-omap2/board-am3517evm.c | 1 +
arch/arm/mach-omap2/board-apollon.c | 1 +
arch/arm/mach-omap2/board-cm-t35.c | 2 +
arch/arm/mach-omap2/board-cm-t3517.c | 1 +
arch/arm/mach-omap2/board-devkit8000.c | 1 +
arch/arm/mach-omap2/board-generic.c | 1 +
arch/arm/mach-omap2/board-h4.c | 1 +
arch/arm/mach-omap2/board-igep0020.c | 2 +
arch/arm/mach-omap2/board-ldp.c | 1 +
arch/arm/mach-omap2/board-n8x0.c | 3 +
arch/arm/mach-omap2/board-omap3beagle.c | 1 +
arch/arm/mach-omap2/board-omap3evm.c | 1 +
arch/arm/mach-omap2/board-omap3logic.c | 2 +
arch/arm/mach-omap2/board-omap3pandora.c | 1 +
arch/arm/mach-omap2/board-omap3stalker.c | 1 +
arch/arm/mach-omap2/board-omap3touchbook.c | 1 +
arch/arm/mach-omap2/board-omap4panda.c | 2 +
arch/arm/mach-omap2/board-overo.c | 1 +
arch/arm/mach-omap2/board-rm680.c | 1 +
arch/arm/mach-omap2/board-rx51.c | 1 +
arch/arm/mach-omap2/board-zoom.c | 2 +
arch/arm/mach-omap2/include/mach/entry-macro.S | 137 ------------------------
arch/arm/plat-omap/Kconfig | 1 +
29 files changed, 36 insertions(+), 137 deletions(-)
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 5034147..9a6d818 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -25,6 +25,7 @@ config ARCH_OMAP2
depends on ARCH_OMAP2PLUS
default y
select CPU_V6
+ select MULTI_IRQ_HANDLER
config ARCH_OMAP3
bool "TI OMAP3"
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
index d704f0a..d33821b 100644
--- a/arch/arm/mach-omap2/board-2430sdp.c
+++ b/arch/arm/mach-omap2/board-2430sdp.c
@@ -301,6 +301,7 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
.map_io = omap243x_map_io,
.init_early = omap2430_init_early,
.init_irq = omap2_init_irq,
+ .handle_irq = omap2_intc_handle_irq,
.init_machine = omap_2430sdp_init,
.timer = &omap2_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index 77142c1..1c17bd8 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -728,6 +728,7 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
.map_io = omap3_map_io,
.init_early = omap3430_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_3430sdp_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c
index f552305..b27aa85 100644
--- a/arch/arm/mach-omap2/board-3630sdp.c
+++ b/arch/arm/mach-omap2/board-3630sdp.c
@@ -215,6 +215,7 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
.map_io = omap3_map_io,
.init_early = omap3630_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_sdp_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 9db9ddb..1d21d3f 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -28,6 +28,7 @@
#include <mach/hardware.h>
#include <mach/omap4-common.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
@@ -985,6 +986,7 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
.map_io = omap4_map_io,
.init_early = omap4430_init_early,
.init_irq = gic_init_irq,
+ .handle_irq = gic_handle_irq,
.init_machine = omap_4430sdp_init,
.timer = &omap4_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c
index 7834536..0166f4e 100644
--- a/arch/arm/mach-omap2/board-am3517crane.c
+++ b/arch/arm/mach-omap2/board-am3517crane.c
@@ -98,6 +98,7 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
.map_io = omap3_map_io,
.init_early = am35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = am3517_crane_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index d314f03..18cf2ce 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -491,6 +491,7 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
.map_io = omap3_map_io,
.init_early = am35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = am3517_evm_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
index de8134b..cf4f2c5 100644
--- a/arch/arm/mach-omap2/board-apollon.c
+++ b/arch/arm/mach-omap2/board-apollon.c
@@ -354,6 +354,7 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
.map_io = omap242x_map_io,
.init_early = omap2420_init_early,
.init_irq = omap2_init_irq,
+ .handle_irq = omap2_intc_handle_irq,
.init_machine = omap_apollon_init,
.timer = &omap2_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
index bd1bcac..21a2436 100644
--- a/arch/arm/mach-omap2/board-cm-t35.c
+++ b/arch/arm/mach-omap2/board-cm-t35.c
@@ -634,6 +634,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = cm_t35_init,
.timer = &omap3_timer,
MACHINE_END
@@ -644,6 +645,7 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730")
.map_io = omap3_map_io,
.init_early = omap3630_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = cm_t3730_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c
index 3f4dc66..1e2c52b 100644
--- a/arch/arm/mach-omap2/board-cm-t3517.c
+++ b/arch/arm/mach-omap2/board-cm-t3517.c
@@ -299,6 +299,7 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517")
.map_io = omap3_map_io,
.init_early = am35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = cm_t3517_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c
index 4291894..31dda68 100644
--- a/arch/arm/mach-omap2/board-devkit8000.c
+++ b/arch/arm/mach-omap2/board-devkit8000.c
@@ -661,6 +661,7 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = devkit8000_init,
.timer = &omap3_secure_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 06941d1..67b821f 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -112,6 +112,7 @@ DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
.map_io = omap243x_map_io,
.init_early = omap2430_init_early,
.init_irq = omap2_init_irq,
+ .handle_irq = omap2_intc_handle_irq,
.init_machine = omap_generic_init,
.timer = &omap2_timer,
.dt_compat = omap243x_boards_compat,
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
index c12666e..58a029f 100644
--- a/arch/arm/mach-omap2/board-h4.c
+++ b/arch/arm/mach-omap2/board-h4.c
@@ -380,6 +380,7 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
.map_io = omap242x_map_io,
.init_early = omap2420_init_early,
.init_irq = omap2_init_irq,
+ .handle_irq = omap2_intc_handle_irq,
.init_machine = omap_h4_init,
.timer = &omap2_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index d0a3f78..b45d48d 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -672,6 +672,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = igep_init,
.timer = &omap3_timer,
MACHINE_END
@@ -682,6 +683,7 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = igep_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index e179da0..72b2d86 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -434,6 +434,7 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
.map_io = omap3_map_io,
.init_early = omap3430_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_ldp_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index e9d5f4a..fa04052 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -689,6 +689,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
.map_io = omap242x_map_io,
.init_early = omap2420_init_early,
.init_irq = omap2_init_irq,
+ .handle_irq = omap2_intc_handle_irq,
.init_machine = n8x0_init_machine,
.timer = &omap2_timer,
MACHINE_END
@@ -699,6 +700,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
.map_io = omap242x_map_io,
.init_early = omap2420_init_early,
.init_irq = omap2_init_irq,
+ .handle_irq = omap2_intc_handle_irq,
.init_machine = n8x0_init_machine,
.timer = &omap2_timer,
MACHINE_END
@@ -709,6 +711,7 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
.map_io = omap242x_map_io,
.init_early = omap2420_init_early,
.init_irq = omap2_init_irq,
+ .handle_irq = omap2_intc_handle_irq,
.init_machine = n8x0_init_machine,
.timer = &omap2_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 4a71cb7..b77fd3b 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -559,6 +559,7 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
.map_io = omap3_map_io,
.init_early = omap3_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_beagle_init,
.timer = &omap3_secure_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index ec00b2e..f86c1e8 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -681,6 +681,7 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_evm_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index 7c0f193..bd65196 100644
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -208,6 +208,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3logic_init,
.timer = &omap3_timer,
MACHINE_END
@@ -217,6 +218,7 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3logic_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index f7811f4..caf607c 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -606,6 +606,7 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3pandora_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
index ddb7d66..4328ec8 100644
--- a/arch/arm/mach-omap2/board-omap3stalker.c
+++ b/arch/arm/mach-omap2/board-omap3stalker.c
@@ -454,6 +454,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_stalker_init,
.timer = &omap3_secure_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
index a2d0d19..2b7bc4e 100644
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -381,6 +381,7 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
.map_io = omap3_map_io,
.init_early = omap3430_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_touchbook_init,
.timer = &omap3_secure_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index 42a42da..828efcb 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -31,6 +31,7 @@
#include <mach/hardware.h>
#include <mach/omap4-common.h>
+#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
@@ -578,6 +579,7 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
.map_io = omap4_map_io,
.init_early = omap4430_init_early,
.init_irq = gic_init_irq,
+ .handle_irq = gic_handle_irq,
.init_machine = omap4_panda_init,
.timer = &omap4_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 4cf7aea..9865d8d 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -562,6 +562,7 @@ MACHINE_START(OVERO, "Gumstix Overo")
.map_io = omap3_map_io,
.init_early = omap35xx_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = overo_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c
index 616fb39..e0f5fd5 100644
--- a/arch/arm/mach-omap2/board-rm680.c
+++ b/arch/arm/mach-omap2/board-rm680.c
@@ -149,6 +149,7 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
.map_io = omap3_map_io,
.init_early = omap3630_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = rm680_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 4af7c4b..5e52af5 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -127,6 +127,7 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
.map_io = omap3_map_io,
.init_early = omap3430_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = rx51_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c
index be6684d..011b2e3 100644
--- a/arch/arm/mach-omap2/board-zoom.c
+++ b/arch/arm/mach-omap2/board-zoom.c
@@ -135,6 +135,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
.map_io = omap3_map_io,
.init_early = omap3430_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_zoom_init,
.timer = &omap3_timer,
MACHINE_END
@@ -145,6 +146,7 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
.map_io = omap3_map_io,
.init_early = omap3630_init_early,
.init_irq = omap3_init_irq,
+ .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_zoom_init,
.timer = &omap3_timer,
MACHINE_END
diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S b/arch/arm/mach-omap2/include/mach/entry-macro.S
index feb90a1..56964a0 100644
--- a/arch/arm/mach-omap2/include/mach/entry-macro.S
+++ b/arch/arm/mach-omap2/include/mach/entry-macro.S
@@ -10,146 +10,9 @@
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
-#include <mach/hardware.h>
-#include <mach/io.h>
-#include <mach/irqs.h>
-#include <asm/hardware/gic.h>
-
-#include <plat/omap24xx.h>
-#include <plat/omap34xx.h>
-#include <plat/omap44xx.h>
-
-#include <plat/multi.h>
-
-#define OMAP2_IRQ_BASE OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE)
-#define OMAP3_IRQ_BASE OMAP2_L4_IO_ADDRESS(OMAP34XX_IC_BASE)
-#define OMAP4_IRQ_BASE OMAP2_L4_IO_ADDRESS(OMAP44XX_GIC_CPU_BASE)
-#define INTCPS_SIR_IRQ_OFFSET 0x0040 /* omap2/3 active interrupt offset */
-#define ACTIVEIRQ_MASK 0x7f /* omap2/3 active interrupt bits */
.macro disable_fiq
.endm
.macro arch_ret_to_user, tmp1, tmp2
.endm
-
-/*
- * Unoptimized irq functions for multi-omap2, 3 and 4
- */
-
-#ifdef MULTI_OMAP2
- /*
- * Configure the interrupt base on the first interrupt.
- * See also omap_irq_base_init for setting omap_irq_base.
- */
- .macro get_irqnr_preamble, base, tmp
- ldr \base, =omap_irq_base @ irq base address
- ldr \base, [\base, #0] @ irq base value
- .endm
-
- /* Check the pending interrupts. Note that base already set */
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- tst \base, #0x100 @ gic address?
- bne 4401f @ found gic
-
- /* Handle omap2 and omap3 */
- ldr \irqnr, [\base, #0x98] /* IRQ pending reg 1 */
- cmp \irqnr, #0x0
- bne 9998f
- ldr \irqnr, [\base, #0xb8] /* IRQ pending reg 2 */
- cmp \irqnr, #0x0
- bne 9998f
- ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
- cmp \irqnr, #0x0
- bne 9998f
-
- /*
- * ti816x has additional IRQ pending register. Checking this
- * register on omap2 & omap3 has no effect (read as 0).
- */
- ldr \irqnr, [\base, #0xf8] /* IRQ pending reg 4 */
- cmp \irqnr, #0x0
-9998:
- ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]
- and \irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */
- b 9999f
-
- /* Handle omap4 */
-4401: ldr \irqstat, [\base, #GIC_CPU_INTACK]
- ldr \tmp, =1021
- bic \irqnr, \irqstat, #0x1c00
- cmp \irqnr, #15
- cmpcc \irqnr, \irqnr
- cmpne \irqnr, \tmp
- cmpcs \irqnr, \irqnr
-9999:
- .endm
-
-#ifdef CONFIG_SMP
- /* We assume that irqstat (the raw value of the IRQ acknowledge
- * register) is preserved from the macro above.
- * If there is an IPI, we immediately signal end of interrupt
- * on the controller, since this requires the original irqstat
- * value which we won't easily be able to recreate later.
- */
-
- .macro test_for_ipi, irqnr, irqstat, base, tmp
- bic \irqnr, \irqstat, #0x1c00
- cmp \irqnr, #16
- it cc
- strcc \irqstat, [\base, #GIC_CPU_EOI]
- it cs
- cmpcs \irqnr, \irqnr
- .endm
-#endif /* CONFIG_SMP */
-
-#else /* MULTI_OMAP2 */
-
-
-/*
- * Optimized irq functions for omap2, 3 and 4
- */
-
-#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
- .macro get_irqnr_preamble, base, tmp
-#ifdef CONFIG_ARCH_OMAP2
- ldr \base, =OMAP2_IRQ_BASE
-#else
- ldr \base, =OMAP3_IRQ_BASE
-#endif
- .endm
-
- /* Check the pending interrupts. Note that base already set */
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- ldr \irqnr, [\base, #0x98] /* IRQ pending reg 1 */
- cmp \irqnr, #0x0
- bne 9999f
- ldr \irqnr, [\base, #0xb8] /* IRQ pending reg 2 */
- cmp \irqnr, #0x0
- bne 9999f
- ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
- cmp \irqnr, #0x0
-#ifdef CONFIG_SOC_OMAPTI816X
- bne 9999f
- ldr \irqnr, [\base, #0xf8] /* IRQ pending reg 4 */
- cmp \irqnr, #0x0
-#endif
-9999:
- ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]
- and \irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */
-
- .endm
-#endif
-
-
-#ifdef CONFIG_ARCH_OMAP4
-#define HAVE_GET_IRQNR_PREAMBLE
-#include <asm/hardware/entry-macro-gic.S>
-
- .macro get_irqnr_preamble, base, tmp
- ldr \base, =OMAP4_IRQ_BASE
- .endm
-
-#endif
-
-#endif /* MULTI_OMAP2 */
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index aa59f42..4a1cc58 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -24,6 +24,7 @@ config ARCH_OMAP2PLUS
select CLKDEV_LOOKUP
select GENERIC_IRQ_CHIP
select OMAP_DM_TIMER
+ select MULTI_IRQ_HANDLER
help
"Systems based on OMAP2, OMAP3 or OMAP4"
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 17/17] ARM: GIC: Make MULTI_IRQ_HANDLER mandatory
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
` (15 preceding siblings ...)
2011-11-04 16:57 ` [PATCH v3 16/17] ARM: omap2plus: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
@ 2011-11-04 16:57 ` Marc Zyngier
16 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-04 16:57 UTC (permalink / raw)
To: linux-arm-kernel
Now that MULTI_IRQ_HANDLER is selected by all the in-tree
GIC users, make it mandatory and remove the unused macros.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/Kconfig | 6 --
arch/arm/common/Kconfig | 1 +
arch/arm/common/gic.c | 4 --
arch/arm/include/asm/hardware/entry-macro-gic.S | 60 -----------------------
arch/arm/include/asm/hardware/gic.h | 1 -
arch/arm/mach-msm/Kconfig | 2 -
arch/arm/mach-omap2/Kconfig | 1 +
arch/arm/mach-tegra/Kconfig | 1 -
arch/arm/mach-ux500/Kconfig | 1 -
arch/arm/plat-omap/Kconfig | 1 -
10 files changed, 2 insertions(+), 76 deletions(-)
delete mode 100644 arch/arm/include/asm/hardware/entry-macro-gic.S
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index a3bcccc..c4f13c3 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -278,7 +278,6 @@ config ARCH_REALVIEW
select ARM_TIMER_SP804
select GPIO_PL061 if GPIOLIB
select NEED_MACH_MEMORY_H
- select MULTI_IRQ_HANDLER
help
This enables support for ARM Ltd RealView boards.
@@ -311,7 +310,6 @@ config ARCH_VEXPRESS
select ICST
select PLAT_VERSATILE
select PLAT_VERSATILE_CLCD
- select MULTI_IRQ_HANDLER
help
This enables support for the ARM Ltd Versatile Express boards.
@@ -347,7 +345,6 @@ config ARCH_HIGHBANK
select GENERIC_CLOCKEVENTS
select HAVE_ARM_SCU
select USE_OF
- select MULTI_IRQ_HANDLER
help
Support for the Calxeda Highbank SoC based boards.
@@ -366,7 +363,6 @@ config ARCH_CNS3XXX
select ARM_GIC
select MIGHT_HAVE_PCI
select PCI_DOMAINS if PCI
- select MULTI_IRQ_HANDLER
help
Support for Cavium Networks CNS3XXX platform.
@@ -856,7 +852,6 @@ config ARCH_EXYNOS4
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select NEED_MACH_MEMORY_H
- select MULTI_IRQ_HANDLER
help
Samsung EXYNOS4 series based systems
@@ -980,7 +975,6 @@ config ARCH_ZYNQ
select ARM_AMBA
select ICST
select USE_OF
- select MULTI_IRQ_HANDLER
help
Support for Xilinx Zynq ARM Cortex A9 Platform
endchoice
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
index 74df9ca..8b8dfba 100644
--- a/arch/arm/common/Kconfig
+++ b/arch/arm/common/Kconfig
@@ -1,5 +1,6 @@
config ARM_GIC
select IRQ_DOMAIN
+ select MULTI_IRQ_HANDLER
bool
config ARM_VIC
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
index 2d29d86..e3d1cf6 100644
--- a/arch/arm/common/gic.c
+++ b/arch/arm/common/gic.c
@@ -63,9 +63,6 @@ struct gic_chip_data {
static DEFINE_RAW_SPINLOCK(irq_controller_lock);
-/* Address of GIC 0 CPU interface */
-void __iomem *gic_cpu_base_addr __read_mostly;
-
/*
* Supported arch specific GIC irq extension.
* Default make them NULL.
@@ -647,7 +644,6 @@ void __init gic_init(unsigned int gic_nr, int irq_start,
* For secondary GICs, skip over PPIs, too.
*/
if (gic_nr == 0) {
- gic_cpu_base_addr = cpu_base;
domain->hwirq_base = 16;
if (irq_start > 0)
irq_start = (irq_start & ~31) + 16;
diff --git a/arch/arm/include/asm/hardware/entry-macro-gic.S b/arch/arm/include/asm/hardware/entry-macro-gic.S
deleted file mode 100644
index 74ebc80..0000000
--- a/arch/arm/include/asm/hardware/entry-macro-gic.S
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * arch/arm/include/asm/hardware/entry-macro-gic.S
- *
- * Low-level IRQ helper macros for GIC
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <asm/hardware/gic.h>
-
-#ifndef HAVE_GET_IRQNR_PREAMBLE
- .macro get_irqnr_preamble, base, tmp
- ldr \base, =gic_cpu_base_addr
- ldr \base, [\base]
- .endm
-#endif
-
-/*
- * The interrupt numbering scheme is defined in the
- * interrupt controller spec. To wit:
- *
- * Interrupts 0-15 are IPI
- * 16-31 are local. We allow 30 to be used for the watchdog.
- * 32-1020 are global
- * 1021-1022 are reserved
- * 1023 is "spurious" (no interrupt)
- *
- * A simple read from the controller will tell us the number of the highest
- * priority enabled interrupt. We then just need to check whether it is in the
- * valid range for an IRQ (30-1020 inclusive).
- */
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
-
- ldr \irqstat, [\base, #GIC_CPU_INTACK]
- /* bits 12-10 = src CPU, 9-0 = int # */
-
- ldr \tmp, =1021
- bic \irqnr, \irqstat, #0x1c00
- cmp \irqnr, #15
- cmpcc \irqnr, \irqnr
- cmpne \irqnr, \tmp
- cmpcs \irqnr, \irqnr
- .endm
-
-/* We assume that irqstat (the raw value of the IRQ acknowledge
- * register) is preserved from the macro above.
- * If there is an IPI, we immediately signal end of interrupt on the
- * controller, since this requires the original irqstat value which
- * we won't easily be able to recreate later.
- */
-
- .macro test_for_ipi, irqnr, irqstat, base, tmp
- bic \irqnr, \irqstat, #0x1c00
- cmp \irqnr, #16
- strcc \irqstat, [\base, #GIC_CPU_EOI]
- cmpcs \irqnr, \irqnr
- .endm
diff --git a/arch/arm/include/asm/hardware/gic.h b/arch/arm/include/asm/hardware/gic.h
index a38eee2..b54a5b0 100644
--- a/arch/arm/include/asm/hardware/gic.h
+++ b/arch/arm/include/asm/hardware/gic.h
@@ -36,7 +36,6 @@
#include <linux/irqdomain.h>
struct device_node;
-extern void __iomem *gic_cpu_base_addr;
extern struct irq_chip gic_arch_extn;
void gic_init(unsigned int, int, void __iomem *, void __iomem *);
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index ba36b74..ebde97f 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -50,7 +50,6 @@ config ARCH_MSM8X60
select GPIO_MSM_V2
select MSM_GPIOMUX
select MSM_SCM if SMP
- select MULTI_IRQ_HANDLER
config ARCH_MSM8960
bool "MSM8960"
@@ -61,7 +60,6 @@ config ARCH_MSM8960
select MSM_V2_TLMM
select MSM_GPIOMUX
select MSM_SCM if SMP
- select MULTI_IRQ_HANDLER
endchoice
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 9a6d818..22f7c97 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -37,6 +37,7 @@ config ARCH_OMAP3
select ARCH_HAS_OPP
select PM_OPP if PM
select ARM_CPU_SUSPEND if PM
+ select MULTI_IRQ_HANDLER
config ARCH_OMAP4
bool "TI OMAP4"
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index a6faa50..91aff7c 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -13,7 +13,6 @@ config ARCH_TEGRA_2x_SOC
select USB_ARCH_HAS_EHCI if USB_SUPPORT
select USB_ULPI if USB_SUPPORT
select USB_ULPI_VIEWPORT if USB_SUPPORT
- select MULTI_IRQ_HANDLER
help
Support for NVIDIA Tegra AP20 and T20 processors, based on the
ARM CortexA9MP CPU and the ARM PL310 L2 cache controller
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig
index bb2b52b..a3e0c86 100644
--- a/arch/arm/mach-ux500/Kconfig
+++ b/arch/arm/mach-ux500/Kconfig
@@ -7,7 +7,6 @@ config UX500_SOC_COMMON
select HAS_MTU
select ARM_ERRATA_753970
select ARM_ERRATA_754322
- select MULTI_IRQ_HANDLER
menu "Ux500 SoC"
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index 4a1cc58..aa59f42 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -24,7 +24,6 @@ config ARCH_OMAP2PLUS
select CLKDEV_LOOKUP
select GENERIC_IRQ_CHIP
select OMAP_DM_TIMER
- select MULTI_IRQ_HANDLER
help
"Systems based on OMAP2, OMAP3 or OMAP4"
--
1.7.0.4
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-04 16:57 ` [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Marc Zyngier
@ 2011-11-04 18:30 ` Nicolas Pitre
2011-11-04 20:37 ` Eric Miao
2011-11-07 9:45 ` Jamie Iles
2 siblings, 0 replies; 30+ messages in thread
From: Nicolas Pitre @ 2011-11-04 18:30 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, 4 Nov 2011, Marc Zyngier wrote:
> Even when CONFIG_MULTI_IRQ_HANDLER is selected, the core code
> requires the arch_irq_handler_default macro to be defined as
> a fallback.
>
> It turns out nobody is using that particular feature as both PXA
> and shmobile have all their machine descriptors populated with
> the interrupt handler, leaving unused code (or empty macros) in
> their entry-macro.S file just to be able to compile entry-armv.S.
>
> Make CONFIG_MULTI_IRQ_HANDLER exclusive wrt arch_irq_handler_default,
> which allows to remove one test from the hot path. Also cleanup both
> PXA and shmobile entry-macro.S.
>
> Cc: Eric Miao <eric.y.miao@gmail.com>
> Cc: Paul Mundt <lethal@linux-sh.org>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
I like the look of it.
Acked-by: Nicolas Pitre <nico@linaro.org>
> ---
> arch/arm/kernel/entry-armv.S | 7 ++--
> arch/arm/mach-pxa/include/mach/entry-macro.S | 36 ---------------------
> arch/arm/mach-shmobile/include/mach/entry-macro.S | 9 -----
> 3 files changed, 3 insertions(+), 49 deletions(-)
>
> diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
> index 9ad50c4..bd49a6a 100644
> --- a/arch/arm/kernel/entry-armv.S
> +++ b/arch/arm/kernel/entry-armv.S
> @@ -36,12 +36,11 @@
> #ifdef CONFIG_MULTI_IRQ_HANDLER
> ldr r1, =handle_arch_irq
> mov r0, sp
> - ldr r1, [r1]
> adr lr, BSYM(9997f)
> - teq r1, #0
> - movne pc, r1
> -#endif
> + ldr pc, [r1]
> +#else
> arch_irq_handler_default
> +#endif
> 9997:
> .endm
>
> diff --git a/arch/arm/mach-pxa/include/mach/entry-macro.S b/arch/arm/mach-pxa/include/mach/entry-macro.S
> index a73bc86..260c0c1 100644
> --- a/arch/arm/mach-pxa/include/mach/entry-macro.S
> +++ b/arch/arm/mach-pxa/include/mach/entry-macro.S
> @@ -7,45 +7,9 @@
> * License version 2. This program is licensed "as is" without any
> * warranty of any kind, whether express or implied.
> */
> -#include <mach/hardware.h>
> -#include <mach/irqs.h>
>
> .macro disable_fiq
> .endm
>
> - .macro get_irqnr_preamble, base, tmp
> - .endm
> -
> .macro arch_ret_to_user, tmp1, tmp2
> .endm
> -
> - .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
> - mrc p15, 0, \tmp, c0, c0, 0 @ CPUID
> - mov \tmp, \tmp, lsr #13
> - and \tmp, \tmp, #0x7 @ Core G
> - cmp \tmp, #1
> - bhi 1002f
> -
> - @ Core Generation 1 (PXA25x)
> - mov \base, #io_p2v(0x40000000) @ IIR Ctl = 0x40d00000
> - add \base, \base, #0x00d00000
> - ldr \irqstat, [\base, #0] @ ICIP
> - ldr \irqnr, [\base, #4] @ ICMR
> -
> - ands \irqnr, \irqstat, \irqnr
> - beq 1001f
> - rsb \irqstat, \irqnr, #0
> - and \irqstat, \irqstat, \irqnr
> - clz \irqnr, \irqstat
> - rsb \irqnr, \irqnr, #(31 + PXA_IRQ(0))
> - b 1001f
> -1002:
> - @ Core Generation 2 (PXA27x) or Core Generation 3 (PXA3xx)
> - mrc p6, 0, \irqstat, c5, c0, 0 @ ICHP
> - tst \irqstat, #0x80000000
> - beq 1001f
> - bic \irqstat, \irqstat, #0x80000000
> - mov \irqnr, \irqstat, lsr #16
> - add \irqnr, \irqnr, #(PXA_IRQ(0))
> -1001:
> - .endm
> diff --git a/arch/arm/mach-shmobile/include/mach/entry-macro.S b/arch/arm/mach-shmobile/include/mach/entry-macro.S
> index 8d4a416..2a57b29 100644
> --- a/arch/arm/mach-shmobile/include/mach/entry-macro.S
> +++ b/arch/arm/mach-shmobile/include/mach/entry-macro.S
> @@ -18,14 +18,5 @@
> .macro disable_fiq
> .endm
>
> - .macro get_irqnr_preamble, base, tmp
> - .endm
> -
> - .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
> - .endm
> -
> - .macro test_for_ipi, irqnr, irqstat, base, tmp
> - .endm
> -
> .macro arch_ret_to_user, tmp1, tmp2
> .endm
> --
> 1.7.0.4
>
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 05/17] ARM: highbank: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 ` [PATCH v3 05/17] ARM: highbank: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
@ 2011-11-04 18:30 ` Rob Herring
0 siblings, 0 replies; 30+ messages in thread
From: Rob Herring @ 2011-11-04 18:30 UTC (permalink / raw)
To: linux-arm-kernel
On 11/04/2011 11:57 AM, Marc Zyngier wrote:
> Convert the highbank platform to be using the gic_handle_irq
> function as its primary interrupt handler.
>
> Cc: Rob Herring <rob.herring@calxeda.com>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Rob
> ---
> arch/arm/Kconfig | 1 +
> arch/arm/mach-highbank/highbank.c | 1 +
> arch/arm/mach-highbank/include/mach/entry-macro.S | 2 --
> 3 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index c4f13c3..503daf0 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -345,6 +345,7 @@ config ARCH_HIGHBANK
> select GENERIC_CLOCKEVENTS
> select HAVE_ARM_SCU
> select USE_OF
> + select MULTI_IRQ_HANDLER
> help
> Support for the Calxeda Highbank SoC based boards.
>
> diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
> index b82dcf0..89bdf00 100644
> --- a/arch/arm/mach-highbank/highbank.c
> +++ b/arch/arm/mach-highbank/highbank.c
> @@ -140,6 +140,7 @@ DT_MACHINE_START(HIGHBANK, "Highbank")
> .map_io = highbank_map_io,
> .init_irq = highbank_init_irq,
> .timer = &highbank_timer,
> + .handle_irq = gic_handle_irq,
> .init_machine = highbank_init,
> .dt_compat = highbank_match,
> MACHINE_END
> diff --git a/arch/arm/mach-highbank/include/mach/entry-macro.S b/arch/arm/mach-highbank/include/mach/entry-macro.S
> index 73c1129..a14f9e6 100644
> --- a/arch/arm/mach-highbank/include/mach/entry-macro.S
> +++ b/arch/arm/mach-highbank/include/mach/entry-macro.S
> @@ -1,5 +1,3 @@
> -#include <asm/hardware/entry-macro-gic.S>
> -
> .macro disable_fiq
> .endm
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 10/17] ARM: tegra2: convert to CONFIG_MULTI_IRQ_HANDLER
2011-11-04 16:57 ` [PATCH v3 10/17] ARM: tegra2: " Marc Zyngier
@ 2011-11-04 19:48 ` Olof Johansson
0 siblings, 0 replies; 30+ messages in thread
From: Olof Johansson @ 2011-11-04 19:48 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Nov 4, 2011 at 9:57 AM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> Convert the tegra2 platforms to be using the gic_handle_irq
> function as their primary interrupt handler.
>
> Tested on harmony.
>
> Cc: Colin Cross <ccross@android.com>
> Acked-by: Stephen Warren <swarren@nvidia.com>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Hm, the series did require some manual touch up on top of last night's
linux-next, mostly due to fuzz and some exynos changes. That being
said, the tegra parts are still:
Acked-by: Olof Johansson <olof@lixom.net>
(I acked 0/x of the last patch set instead of the individual patch)
-Olof
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-04 16:57 ` [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Marc Zyngier
2011-11-04 18:30 ` Nicolas Pitre
@ 2011-11-04 20:37 ` Eric Miao
2011-11-07 9:45 ` Jamie Iles
2 siblings, 0 replies; 30+ messages in thread
From: Eric Miao @ 2011-11-04 20:37 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, Nov 5, 2011 at 12:57 AM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> Even when CONFIG_MULTI_IRQ_HANDLER is selected, the core code
> requires the arch_irq_handler_default macro to be defined as
> a fallback.
>
> It turns out nobody is using that particular feature as both PXA
> and shmobile have all their machine descriptors populated with
> the interrupt handler, leaving unused code (or empty macros) in
> their entry-macro.S file just to be able to compile entry-armv.S.
>
> Make CONFIG_MULTI_IRQ_HANDLER exclusive wrt arch_irq_handler_default,
> which allows to remove one test from the hot path. Also cleanup both
> PXA and shmobile entry-macro.S.
>
> Cc: Eric Miao <eric.y.miao@gmail.com>
> Cc: Paul Mundt <lethal@linux-sh.org>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: Eric Miao <eric.y.miao@gmail.com>
> ---
> ?arch/arm/kernel/entry-armv.S ? ? ? ? ? ? ? ? ? ? ?| ? ?7 ++--
> ?arch/arm/mach-pxa/include/mach/entry-macro.S ? ? ?| ? 36 ---------------------
> ?arch/arm/mach-shmobile/include/mach/entry-macro.S | ? ?9 -----
> ?3 files changed, 3 insertions(+), 49 deletions(-)
>
> diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
> index 9ad50c4..bd49a6a 100644
> --- a/arch/arm/kernel/entry-armv.S
> +++ b/arch/arm/kernel/entry-armv.S
> @@ -36,12 +36,11 @@
> ?#ifdef CONFIG_MULTI_IRQ_HANDLER
> ? ? ? ?ldr ? ? r1, =handle_arch_irq
> ? ? ? ?mov ? ? r0, sp
> - ? ? ? ldr ? ? r1, [r1]
> ? ? ? ?adr ? ? lr, BSYM(9997f)
> - ? ? ? teq ? ? r1, #0
> - ? ? ? movne ? pc, r1
> -#endif
> + ? ? ? ldr ? ? pc, [r1]
> +#else
> ? ? ? ?arch_irq_handler_default
> +#endif
> ?9997:
> ? ? ? ?.endm
>
> diff --git a/arch/arm/mach-pxa/include/mach/entry-macro.S b/arch/arm/mach-pxa/include/mach/entry-macro.S
> index a73bc86..260c0c1 100644
> --- a/arch/arm/mach-pxa/include/mach/entry-macro.S
> +++ b/arch/arm/mach-pxa/include/mach/entry-macro.S
> @@ -7,45 +7,9 @@
> ?* License version 2. This program is licensed "as is" without any
> ?* warranty of any kind, whether express or implied.
> ?*/
> -#include <mach/hardware.h>
> -#include <mach/irqs.h>
>
> ? ? ? ? ? ? ? ?.macro ?disable_fiq
> ? ? ? ? ? ? ? ?.endm
>
> - ? ? ? ? ? ? ? .macro ?get_irqnr_preamble, base, tmp
> - ? ? ? ? ? ? ? .endm
> -
> ? ? ? ? ? ? ? ?.macro ?arch_ret_to_user, tmp1, tmp2
> ? ? ? ? ? ? ? ?.endm
> -
> - ? ? ? ? ? ? ? .macro ?get_irqnr_and_base, irqnr, irqstat, base, tmp
> - ? ? ? ? ? ? ? mrc ? ? p15, 0, \tmp, c0, c0, 0 ? ? ? ? @ CPUID
> - ? ? ? ? ? ? ? mov ? ? \tmp, \tmp, lsr #13
> - ? ? ? ? ? ? ? and ? ? \tmp, \tmp, #0x7 ? ? ? ? ? ? ? ?@ Core G
> - ? ? ? ? ? ? ? cmp ? ? \tmp, #1
> - ? ? ? ? ? ? ? bhi ? ? 1002f
> -
> - ? ? ? ? ? ? ? @ Core Generation 1 (PXA25x)
> - ? ? ? ? ? ? ? mov ? ? \base, #io_p2v(0x40000000) ? ? ?@ IIR Ctl = 0x40d00000
> - ? ? ? ? ? ? ? add ? ? \base, \base, #0x00d00000
> - ? ? ? ? ? ? ? ldr ? ? \irqstat, [\base, #0] ? ? ? ? ? @ ICIP
> - ? ? ? ? ? ? ? ldr ? ? \irqnr, [\base, #4] ? ? ? ? ? ? @ ICMR
> -
> - ? ? ? ? ? ? ? ands ? ?\irqnr, \irqstat, \irqnr
> - ? ? ? ? ? ? ? beq ? ? 1001f
> - ? ? ? ? ? ? ? rsb ? ? \irqstat, \irqnr, #0
> - ? ? ? ? ? ? ? and ? ? \irqstat, \irqstat, \irqnr
> - ? ? ? ? ? ? ? clz ? ? \irqnr, \irqstat
> - ? ? ? ? ? ? ? rsb ? ? \irqnr, \irqnr, #(31 + PXA_IRQ(0))
> - ? ? ? ? ? ? ? b ? ? ? 1001f
> -1002:
> - ? ? ? ? ? ? ? @ Core Generation 2 (PXA27x) or Core Generation 3 (PXA3xx)
> - ? ? ? ? ? ? ? mrc ? ? p6, 0, \irqstat, c5, c0, 0 ? ? ?@ ICHP
> - ? ? ? ? ? ? ? tst ? ? \irqstat, #0x80000000
> - ? ? ? ? ? ? ? beq ? ? 1001f
> - ? ? ? ? ? ? ? bic ? ? \irqstat, \irqstat, #0x80000000
> - ? ? ? ? ? ? ? mov ? ? \irqnr, \irqstat, lsr #16
> - ? ? ? ? ? ? ? add ? ? \irqnr, \irqnr, #(PXA_IRQ(0))
> -1001:
> - ? ? ? ? ? ? ? .endm
> diff --git a/arch/arm/mach-shmobile/include/mach/entry-macro.S b/arch/arm/mach-shmobile/include/mach/entry-macro.S
> index 8d4a416..2a57b29 100644
> --- a/arch/arm/mach-shmobile/include/mach/entry-macro.S
> +++ b/arch/arm/mach-shmobile/include/mach/entry-macro.S
> @@ -18,14 +18,5 @@
> ? ? ? ?.macro ?disable_fiq
> ? ? ? ?.endm
>
> - ? ? ? .macro ?get_irqnr_preamble, base, tmp
> - ? ? ? .endm
> -
> - ? ? ? .macro ?get_irqnr_and_base, irqnr, irqstat, base, tmp
> - ? ? ? .endm
> -
> - ? ? ? .macro ?test_for_ipi, irqnr, irqstat, base, tmp
> - ? ? ? .endm
> -
> ? ? ? ?.macro ?arch_ret_to_user, tmp1, tmp2
> ? ? ? ?.endm
> --
> 1.7.0.4
>
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 02/17] ARM: mxc: rename gic_handle_irq to avoid name clash
2011-11-04 16:57 ` [PATCH v3 02/17] ARM: mxc: rename gic_handle_irq to avoid name clash Marc Zyngier
@ 2011-11-04 21:09 ` Shawn Guo
0 siblings, 0 replies; 30+ messages in thread
From: Shawn Guo @ 2011-11-04 21:09 UTC (permalink / raw)
To: linux-arm-kernel
Hi Marc,
Thanks for the patch. Minor comment below.
On Fri, Nov 04, 2011 at 04:57:36PM +0000, Marc Zyngier wrote:
> Before introducing a global gic_handle_irq(), rename
> MXC's version to mcx_gic_handle_irq(). This function will be
s/mcx_gic_handle_irq/mxc_gic_handle_irq
> removed altogether in a later patch.
>
> Cc: Shawn Guo <shawn.guo@linaro.org>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
> arch/arm/plat-mxc/gic.c | 2 +-
> arch/arm/plat-mxc/include/mach/common.h | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/plat-mxc/gic.c b/arch/arm/plat-mxc/gic.c
> index 12f8f81..ea51ea4 100644
> --- a/arch/arm/plat-mxc/gic.c
> +++ b/arch/arm/plat-mxc/gic.c
> @@ -18,7 +18,7 @@
> #include <asm/smp.h>
> #endif
>
> -asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
> +asmlinkage void __exception_irq_entry mxc_gic_handle_irq(struct pt_regs *regs)
> {
> u32 irqstat, irqnr;
>
> diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
> index 83b745a..f6c13ab 100644
> --- a/arch/arm/plat-mxc/include/mach/common.h
> +++ b/arch/arm/plat-mxc/include/mach/common.h
> @@ -90,7 +90,7 @@ extern void imx_print_silicon_rev(const char *cpu, int srev);
>
> void avic_handle_irq(struct pt_regs *);
> void tzic_handle_irq(struct pt_regs *);
> -void gic_handle_irq(struct pt_regs *);
> +void mxc_gic_handle_irq(struct pt_regs *);
>
> #define imx1_handle_irq avic_handle_irq
> #define imx21_handle_irq avic_handle_irq
> @@ -101,7 +101,7 @@ void gic_handle_irq(struct pt_regs *);
> #define imx50_handle_irq tzic_handle_irq
> #define imx51_handle_irq tzic_handle_irq
> #define imx53_handle_irq tzic_handle_irq
> -#define imx6q_handle_irq gic_handle_irq
> +#define imx6q_handle_irq mcx_gic_handle_irq
>
s/mcx_gic_handle_irq/mxc_gic_handle_irq
Regards,
Shawn
> extern void imx_enable_cpu(int cpu, bool enable);
> extern void imx_set_cpu_jump(int cpu, void *jump_addr);
> --
> 1.7.0.4
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 04/17] ARM: mxc: convert smp platforms to global gic_handle_irq()
2011-11-04 16:57 ` [PATCH v3 04/17] ARM: mxc: convert smp platforms to global gic_handle_irq() Marc Zyngier
@ 2011-11-04 21:15 ` Shawn Guo
2011-11-07 14:01 ` Marc Zyngier
0 siblings, 1 reply; 30+ messages in thread
From: Shawn Guo @ 2011-11-04 21:15 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Nov 04, 2011 at 04:57:38PM +0000, Marc Zyngier wrote:
> Convert the SMP shmobile platforms to use the global gic_handle_irq()
s/shmobile/imx
Other than the typo there, for patches #2 and #4:
Acked-by: Shawn Guo <shawn.guo@linaro.org>
> function instead a private function.
>
> Cc: Shawn Guo <shawn.guo@linaro.org>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-04 16:57 ` [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Marc Zyngier
2011-11-04 18:30 ` Nicolas Pitre
2011-11-04 20:37 ` Eric Miao
@ 2011-11-07 9:45 ` Jamie Iles
2011-11-07 11:02 ` Linus Walleij
2 siblings, 1 reply; 30+ messages in thread
From: Jamie Iles @ 2011-11-07 9:45 UTC (permalink / raw)
To: linux-arm-kernel
Hi Marc,
On Fri, Nov 04, 2011 at 04:57:35PM +0000, Marc Zyngier wrote:
> Even when CONFIG_MULTI_IRQ_HANDLER is selected, the core code
> requires the arch_irq_handler_default macro to be defined as
> a fallback.
>
> It turns out nobody is using that particular feature as both PXA
> and shmobile have all their machine descriptors populated with
> the interrupt handler, leaving unused code (or empty macros) in
> their entry-macro.S file just to be able to compile entry-armv.S.
>
> Make CONFIG_MULTI_IRQ_HANDLER exclusive wrt arch_irq_handler_default,
> which allows to remove one test from the hot path. Also cleanup both
> PXA and shmobile entry-macro.S.
>
> Cc: Eric Miao <eric.y.miao@gmail.com>
> Cc: Paul Mundt <lethal@linux-sh.org>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Jamie Iles <jamie@jamieiles.com>
My VIC patches are using this so if it goes in through the GIC patches
first then that would be great!
Thanks,
Jamie
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-07 9:45 ` Jamie Iles
@ 2011-11-07 11:02 ` Linus Walleij
2011-11-07 11:12 ` Marc Zyngier
0 siblings, 1 reply; 30+ messages in thread
From: Linus Walleij @ 2011-11-07 11:02 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Nov 7, 2011 at 10:45 AM, Jamie Iles <jamie@jamieiles.com> wrote:
> My VIC patches are using this so if it goes in through the GIC patches
> first then that would be great!
That sounds like you should create some common irqchip-consolidation
topic branch in ARM SoC or Russell's tree to get this properly stacked up?
Linus Walleij
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-07 11:02 ` Linus Walleij
@ 2011-11-07 11:12 ` Marc Zyngier
2011-11-07 11:17 ` Jamie Iles
0 siblings, 1 reply; 30+ messages in thread
From: Marc Zyngier @ 2011-11-07 11:12 UTC (permalink / raw)
To: linux-arm-kernel
On 07/11/11 11:02, Linus Walleij wrote:
> On Mon, Nov 7, 2011 at 10:45 AM, Jamie Iles <jamie@jamieiles.com> wrote:
>
>> My VIC patches are using this so if it goes in through the GIC patches
>> first then that would be great!
>
> That sounds like you should create some common irqchip-consolidation
> topic branch in ARM SoC or Russell's tree to get this properly stacked up?
Sounds like a good idea to me. I'm willing to gather such patches if
nobody else steps up.
M.
--
Jazz is not dead. It just smells funny...
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-07 11:12 ` Marc Zyngier
@ 2011-11-07 11:17 ` Jamie Iles
2011-11-07 11:22 ` Marc Zyngier
0 siblings, 1 reply; 30+ messages in thread
From: Jamie Iles @ 2011-11-07 11:17 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Nov 07, 2011 at 11:12:09AM +0000, Marc Zyngier wrote:
> On 07/11/11 11:02, Linus Walleij wrote:
> > On Mon, Nov 7, 2011 at 10:45 AM, Jamie Iles <jamie@jamieiles.com> wrote:
> >
> >> My VIC patches are using this so if it goes in through the GIC patches
> >> first then that would be great!
> >
> > That sounds like you should create some common irqchip-consolidation
> > topic branch in ARM SoC or Russell's tree to get this properly stacked up?
>
> Sounds like a good idea to me. I'm willing to gather such patches if
> nobody else steps up.
Great, thanks Marc! I'm happy to rebase my branch onto any point so you
can easily pull if that makes things easier.
Thanks,
Jamie
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive
2011-11-07 11:17 ` Jamie Iles
@ 2011-11-07 11:22 ` Marc Zyngier
0 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-07 11:22 UTC (permalink / raw)
To: linux-arm-kernel
On 07/11/11 11:17, Jamie Iles wrote:
> On Mon, Nov 07, 2011 at 11:12:09AM +0000, Marc Zyngier wrote:
>> On 07/11/11 11:02, Linus Walleij wrote:
>>> On Mon, Nov 7, 2011 at 10:45 AM, Jamie Iles <jamie@jamieiles.com> wrote:
>>>
>>>> My VIC patches are using this so if it goes in through the GIC patches
>>>> first then that would be great!
>>>
>>> That sounds like you should create some common irqchip-consolidation
>>> topic branch in ARM SoC or Russell's tree to get this properly stacked up?
>>
>> Sounds like a good idea to me. I'm willing to gather such patches if
>> nobody else steps up.
>
> Great, thanks Marc! I'm happy to rebase my branch onto any point so you
> can easily pull if that makes things easier.
Thanks Jamie. I'll create a branch based on -rc1 as soon as it is tagged
(shouldn't be long now).
Cheers,
M.
--
Jazz is not dead. It just smells funny...
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 04/17] ARM: mxc: convert smp platforms to global gic_handle_irq()
2011-11-04 21:15 ` Shawn Guo
@ 2011-11-07 14:01 ` Marc Zyngier
0 siblings, 0 replies; 30+ messages in thread
From: Marc Zyngier @ 2011-11-07 14:01 UTC (permalink / raw)
To: linux-arm-kernel
On 04/11/11 21:15, Shawn Guo wrote:
> On Fri, Nov 04, 2011 at 04:57:38PM +0000, Marc Zyngier wrote:
>> Convert the SMP shmobile platforms to use the global gic_handle_irq()
>
> s/shmobile/imx
>
> Other than the typo there, for patches #2 and #4:
>
> Acked-by: Shawn Guo <shawn.guo@linaro.org>
>
>> function instead a private function.
Can't believe I made that many typo in so few patches... ;-)
Thanks for reviewing!
M.
--
Jazz is not dead. It just smells funny...
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2011-11-07 14:01 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-04 16:57 [PATCH v3 00/17] Switch GIC users (and omap2plus) to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 01/17] ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Marc Zyngier
2011-11-04 18:30 ` Nicolas Pitre
2011-11-04 20:37 ` Eric Miao
2011-11-07 9:45 ` Jamie Iles
2011-11-07 11:02 ` Linus Walleij
2011-11-07 11:12 ` Marc Zyngier
2011-11-07 11:17 ` Jamie Iles
2011-11-07 11:22 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 02/17] ARM: mxc: rename gic_handle_irq to avoid name clash Marc Zyngier
2011-11-04 21:09 ` Shawn Guo
2011-11-04 16:57 ` [PATCH v3 03/17] ARM: GIC: Add global gic_handle_irq() function Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 04/17] ARM: mxc: convert smp platforms to global gic_handle_irq() Marc Zyngier
2011-11-04 21:15 ` Shawn Guo
2011-11-07 14:01 ` Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 05/17] ARM: highbank: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
2011-11-04 18:30 ` Rob Herring
2011-11-04 16:57 ` [PATCH v3 06/17] ARM: RealView: " Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 07/17] ARM: VExpress: " Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 08/17] ARM: msm: convert SMP platforms " Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 09/17] ARM: exynos4: convert " Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 10/17] ARM: tegra2: " Marc Zyngier
2011-11-04 19:48 ` Olof Johansson
2011-11-04 16:57 ` [PATCH v3 11/17] ARM: ux500: " Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 12/17] ARM: shmobile: convert smp platforms to gic_handle_irq() Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 13/17] ARM: cns3xxx: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 14/17] ARM: zynq: " Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 15/17] ARM: omap2/3: Add global omap2/3_intc_handle_irq() functions Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 16/17] ARM: omap2plus: convert to CONFIG_MULTI_IRQ_HANDLER Marc Zyngier
2011-11-04 16:57 ` [PATCH v3 17/17] ARM: GIC: Make MULTI_IRQ_HANDLER mandatory Marc Zyngier
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).