diff options
author | Olof Johansson <olof@lixom.net> | 2013-04-28 18:06:56 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-04-28 18:06:56 -0400 |
commit | e0d20b69d3fa74a21ec363989612bddd58b930b8 (patch) | |
tree | 8ed7c390f99c4d40f59f5dc49e39b077fbb9947f /arch | |
parent | 128673b3646beba4f5a41f50a7a21c3c2f3455ca (diff) | |
parent | bc895b5987dd5fad89c0e9693b38104679b647c4 (diff) |
Merge branch 'gic/cleanup' into next/soc
Merge in the gic cleanup since it has a handful of annoying internal conflicts
with soc development branches. All of them are delete/delete conflicts.
* gic/cleanup:
irqchip: vic: add include of linux/irq.h
irqchip: gic: Perform the gic_secondary_init() call via CPU notifier
irqchip: gic: Call handle_bad_irq() directly
arm: Move chained_irq_(enter|exit) to a generic file
arm: Move the set_handle_irq and handle_arch_irq declarations to asm/irq.h
Signed-off-by: Olof Johansson <olof@lixom.net>
Conflicts:
arch/arm/mach-shmobile/smp-emev2.c
arch/arm/mach-shmobile/smp-r8a7779.c
arch/arm/mach-shmobile/smp-sh73a0.c
arch/arm/mach-socfpga/platsmp.c
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/irq.h | 5 | ||||
-rw-r--r-- | arch/arm/include/asm/mach/irq.h | 36 | ||||
-rw-r--r-- | arch/arm/mach-at91/gpio.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-exynos/common.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-exynos/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-highbank/platsmp.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-imx/platsmp.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-msm/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap-smp.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-prima2/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-s3c24xx/irq.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/smp-emev2.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/smp-r8a7779.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/smp-sh73a0.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-socfpga/platsmp.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-spear13xx/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-tegra/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-ux500/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-virt/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/plat-samsung/irq-vic-timer.c | 3 | ||||
-rw-r--r-- | arch/arm/plat-samsung/s5p-irq-gpioint.c | 3 | ||||
-rw-r--r-- | arch/arm/plat-versatile/platsmp.c | 8 |
22 files changed, 10 insertions, 165 deletions
diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h index 35c21c375d81..53c15dec7af6 100644 --- a/arch/arm/include/asm/irq.h +++ b/arch/arm/include/asm/irq.h | |||
@@ -30,6 +30,11 @@ extern void asm_do_IRQ(unsigned int, struct pt_regs *); | |||
30 | void handle_IRQ(unsigned int, struct pt_regs *); | 30 | void handle_IRQ(unsigned int, struct pt_regs *); |
31 | void init_IRQ(void); | 31 | void init_IRQ(void); |
32 | 32 | ||
33 | #ifdef CONFIG_MULTI_IRQ_HANDLER | ||
34 | extern void (*handle_arch_irq)(struct pt_regs *); | ||
35 | extern void set_handle_irq(void (*handle_irq)(struct pt_regs *)); | ||
36 | #endif | ||
37 | |||
33 | #endif | 38 | #endif |
34 | 39 | ||
35 | #endif | 40 | #endif |
diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h index 18c883023339..2092ee1e1300 100644 --- a/arch/arm/include/asm/mach/irq.h +++ b/arch/arm/include/asm/mach/irq.h | |||
@@ -20,11 +20,6 @@ struct seq_file; | |||
20 | extern void init_FIQ(int); | 20 | extern void init_FIQ(int); |
21 | extern int show_fiq_list(struct seq_file *, int); | 21 | extern int show_fiq_list(struct seq_file *, int); |
22 | 22 | ||
23 | #ifdef CONFIG_MULTI_IRQ_HANDLER | ||
24 | extern void (*handle_arch_irq)(struct pt_regs *); | ||
25 | extern void set_handle_irq(void (*handle_irq)(struct pt_regs *)); | ||
26 | #endif | ||
27 | |||
28 | /* | 23 | /* |
29 | * This is for easy migration, but should be changed in the source | 24 | * This is for easy migration, but should be changed in the source |
30 | */ | 25 | */ |
@@ -35,35 +30,4 @@ do { \ | |||
35 | raw_spin_unlock(&desc->lock); \ | 30 | raw_spin_unlock(&desc->lock); \ |
36 | } while(0) | 31 | } while(0) |
37 | 32 | ||
38 | #ifndef __ASSEMBLY__ | ||
39 | /* | ||
40 | * Entry/exit functions for chained handlers where the primary IRQ chip | ||
41 | * may implement either fasteoi or level-trigger flow control. | ||
42 | */ | ||
43 | static inline void chained_irq_enter(struct irq_chip *chip, | ||
44 | struct irq_desc *desc) | ||
45 | { | ||
46 | /* FastEOI controllers require no action on entry. */ | ||
47 | if (chip->irq_eoi) | ||
48 | return; | ||
49 | |||
50 | if (chip->irq_mask_ack) { | ||
51 | chip->irq_mask_ack(&desc->irq_data); | ||
52 | } else { | ||
53 | chip->irq_mask(&desc->irq_data); | ||
54 | if (chip->irq_ack) | ||
55 | chip->irq_ack(&desc->irq_data); | ||
56 | } | ||
57 | } | ||
58 | |||
59 | static inline void chained_irq_exit(struct irq_chip *chip, | ||
60 | struct irq_desc *desc) | ||
61 | { | ||
62 | if (chip->irq_eoi) | ||
63 | chip->irq_eoi(&desc->irq_data); | ||
64 | else | ||
65 | chip->irq_unmask(&desc->irq_data); | ||
66 | } | ||
67 | #endif | ||
68 | |||
69 | #endif | 33 | #endif |
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index c5d7e1e9d757..a5afcf76550e 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
@@ -22,10 +22,9 @@ | |||
22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/irqdomain.h> | 24 | #include <linux/irqdomain.h> |
25 | #include <linux/irqchip/chained_irq.h> | ||
25 | #include <linux/of_address.h> | 26 | #include <linux/of_address.h> |
26 | 27 | ||
27 | #include <asm/mach/irq.h> | ||
28 | |||
29 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
30 | #include <mach/at91_pio.h> | 29 | #include <mach/at91_pio.h> |
31 | 30 | ||
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 789d4e66c950..99b7f1cbbb8b 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/irqchip.h> | 26 | #include <linux/irqchip.h> |
27 | #include <linux/of_address.h> | 27 | #include <linux/of_address.h> |
28 | #include <linux/irqchip/arm-gic.h> | 28 | #include <linux/irqchip/arm-gic.h> |
29 | #include <linux/irqchip/chained_irq.h> | ||
29 | 30 | ||
30 | #include <asm/proc-fns.h> | 31 | #include <asm/proc-fns.h> |
31 | #include <asm/exception.h> | 32 | #include <asm/exception.h> |
diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c index 60f7c5be057d..95e04bd5813f 100644 --- a/arch/arm/mach-exynos/platsmp.c +++ b/arch/arm/mach-exynos/platsmp.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/jiffies.h> | 20 | #include <linux/jiffies.h> |
21 | #include <linux/smp.h> | 21 | #include <linux/smp.h> |
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/irqchip/arm-gic.h> | ||
24 | 23 | ||
25 | #include <asm/cacheflush.h> | 24 | #include <asm/cacheflush.h> |
26 | #include <asm/smp_plat.h> | 25 | #include <asm/smp_plat.h> |
@@ -76,13 +75,6 @@ static DEFINE_SPINLOCK(boot_lock); | |||
76 | static void __cpuinit exynos_secondary_init(unsigned int cpu) | 75 | static void __cpuinit exynos_secondary_init(unsigned int cpu) |
77 | { | 76 | { |
78 | /* | 77 | /* |
79 | * if any interrupts are already enabled for the primary | ||
80 | * core (e.g. timer irq), then they will not have been enabled | ||
81 | * for us: do so | ||
82 | */ | ||
83 | gic_secondary_init(0); | ||
84 | |||
85 | /* | ||
86 | * let the primary processor know we're out of the | 78 | * let the primary processor know we're out of the |
87 | * pen, then head off into the C entry point | 79 | * pen, then head off into the C entry point |
88 | */ | 80 | */ |
diff --git a/arch/arm/mach-highbank/platsmp.c b/arch/arm/mach-highbank/platsmp.c index 8797a7001720..a984573e0d02 100644 --- a/arch/arm/mach-highbank/platsmp.c +++ b/arch/arm/mach-highbank/platsmp.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/smp.h> | 18 | #include <linux/smp.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/irqchip/arm-gic.h> | ||
21 | 20 | ||
22 | #include <asm/smp_scu.h> | 21 | #include <asm/smp_scu.h> |
23 | 22 | ||
@@ -25,11 +24,6 @@ | |||
25 | 24 | ||
26 | extern void secondary_startup(void); | 25 | extern void secondary_startup(void); |
27 | 26 | ||
28 | static void __cpuinit highbank_secondary_init(unsigned int cpu) | ||
29 | { | ||
30 | gic_secondary_init(0); | ||
31 | } | ||
32 | |||
33 | static int __cpuinit highbank_boot_secondary(unsigned int cpu, struct task_struct *idle) | 27 | static int __cpuinit highbank_boot_secondary(unsigned int cpu, struct task_struct *idle) |
34 | { | 28 | { |
35 | highbank_set_cpu_jump(cpu, secondary_startup); | 29 | highbank_set_cpu_jump(cpu, secondary_startup); |
@@ -67,7 +61,6 @@ static void __init highbank_smp_prepare_cpus(unsigned int max_cpus) | |||
67 | struct smp_operations highbank_smp_ops __initdata = { | 61 | struct smp_operations highbank_smp_ops __initdata = { |
68 | .smp_init_cpus = highbank_smp_init_cpus, | 62 | .smp_init_cpus = highbank_smp_init_cpus, |
69 | .smp_prepare_cpus = highbank_smp_prepare_cpus, | 63 | .smp_prepare_cpus = highbank_smp_prepare_cpus, |
70 | .smp_secondary_init = highbank_secondary_init, | ||
71 | .smp_boot_secondary = highbank_boot_secondary, | 64 | .smp_boot_secondary = highbank_boot_secondary, |
72 | #ifdef CONFIG_HOTPLUG_CPU | 65 | #ifdef CONFIG_HOTPLUG_CPU |
73 | .cpu_die = highbank_cpu_die, | 66 | .cpu_die = highbank_cpu_die, |
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c index 7c0b03f67b05..77e9a25ed0f6 100644 --- a/arch/arm/mach-imx/platsmp.c +++ b/arch/arm/mach-imx/platsmp.c | |||
@@ -12,7 +12,6 @@ | |||
12 | 12 | ||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/smp.h> | 14 | #include <linux/smp.h> |
15 | #include <linux/irqchip/arm-gic.h> | ||
16 | #include <asm/page.h> | 15 | #include <asm/page.h> |
17 | #include <asm/smp_scu.h> | 16 | #include <asm/smp_scu.h> |
18 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
@@ -52,16 +51,6 @@ void imx_scu_standby_enable(void) | |||
52 | writel_relaxed(val, scu_base); | 51 | writel_relaxed(val, scu_base); |
53 | } | 52 | } |
54 | 53 | ||
55 | static void __cpuinit imx_secondary_init(unsigned int cpu) | ||
56 | { | ||
57 | /* | ||
58 | * if any interrupts are already enabled for the primary | ||
59 | * core (e.g. timer irq), then they will not have been enabled | ||
60 | * for us: do so | ||
61 | */ | ||
62 | gic_secondary_init(0); | ||
63 | } | ||
64 | |||
65 | static int __cpuinit imx_boot_secondary(unsigned int cpu, struct task_struct *idle) | 54 | static int __cpuinit imx_boot_secondary(unsigned int cpu, struct task_struct *idle) |
66 | { | 55 | { |
67 | imx_set_cpu_jump(cpu, v7_secondary_startup); | 56 | imx_set_cpu_jump(cpu, v7_secondary_startup); |
@@ -96,7 +85,6 @@ static void __init imx_smp_prepare_cpus(unsigned int max_cpus) | |||
96 | struct smp_operations imx_smp_ops __initdata = { | 85 | struct smp_operations imx_smp_ops __initdata = { |
97 | .smp_init_cpus = imx_smp_init_cpus, | 86 | .smp_init_cpus = imx_smp_init_cpus, |
98 | .smp_prepare_cpus = imx_smp_prepare_cpus, | 87 | .smp_prepare_cpus = imx_smp_prepare_cpus, |
99 | .smp_secondary_init = imx_secondary_init, | ||
100 | .smp_boot_secondary = imx_boot_secondary, | 88 | .smp_boot_secondary = imx_boot_secondary, |
101 | #ifdef CONFIG_HOTPLUG_CPU | 89 | #ifdef CONFIG_HOTPLUG_CPU |
102 | .cpu_die = imx_cpu_die, | 90 | .cpu_die = imx_cpu_die, |
diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c index 42932865416a..00cdb0a5dac8 100644 --- a/arch/arm/mach-msm/platsmp.c +++ b/arch/arm/mach-msm/platsmp.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/jiffies.h> | 15 | #include <linux/jiffies.h> |
16 | #include <linux/smp.h> | 16 | #include <linux/smp.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/irqchip/arm-gic.h> | ||
19 | 18 | ||
20 | #include <asm/cacheflush.h> | 19 | #include <asm/cacheflush.h> |
21 | #include <asm/cputype.h> | 20 | #include <asm/cputype.h> |
@@ -42,13 +41,6 @@ static inline int get_core_count(void) | |||
42 | static void __cpuinit msm_secondary_init(unsigned int cpu) | 41 | static void __cpuinit msm_secondary_init(unsigned int cpu) |
43 | { | 42 | { |
44 | /* | 43 | /* |
45 | * if any interrupts are already enabled for the primary | ||
46 | * core (e.g. timer irq), then they will not have been enabled | ||
47 | * for us: do so | ||
48 | */ | ||
49 | gic_secondary_init(0); | ||
50 | |||
51 | /* | ||
52 | * let the primary processor know we're out of the | 44 | * let the primary processor know we're out of the |
53 | * pen, then head off into the C entry point | 45 | * pen, then head off into the C entry point |
54 | */ | 46 | */ |
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c index d9727218dd0a..e7a449758ab5 100644 --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c | |||
@@ -67,13 +67,6 @@ static void __cpuinit omap4_secondary_init(unsigned int cpu) | |||
67 | 4, 0, 0, 0, 0, 0); | 67 | 4, 0, 0, 0, 0, 0); |
68 | 68 | ||
69 | /* | 69 | /* |
70 | * If any interrupts are already enabled for the primary | ||
71 | * core (e.g. timer irq), then they will not have been enabled | ||
72 | * for us: do so | ||
73 | */ | ||
74 | gic_secondary_init(0); | ||
75 | |||
76 | /* | ||
77 | * Synchronise with the boot thread. | 70 | * Synchronise with the boot thread. |
78 | */ | 71 | */ |
79 | spin_lock(&boot_lock); | 72 | spin_lock(&boot_lock); |
diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c index 4b788310f6a6..c7c92e78f0cf 100644 --- a/arch/arm/mach-prima2/platsmp.c +++ b/arch/arm/mach-prima2/platsmp.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/delay.h> | 11 | #include <linux/delay.h> |
12 | #include <linux/of.h> | 12 | #include <linux/of.h> |
13 | #include <linux/of_address.h> | 13 | #include <linux/of_address.h> |
14 | #include <linux/irqchip/arm-gic.h> | ||
15 | #include <asm/page.h> | 14 | #include <asm/page.h> |
16 | #include <asm/mach/map.h> | 15 | #include <asm/mach/map.h> |
17 | #include <asm/smp_plat.h> | 16 | #include <asm/smp_plat.h> |
@@ -49,13 +48,6 @@ void __init sirfsoc_map_scu(void) | |||
49 | static void __cpuinit sirfsoc_secondary_init(unsigned int cpu) | 48 | static void __cpuinit sirfsoc_secondary_init(unsigned int cpu) |
50 | { | 49 | { |
51 | /* | 50 | /* |
52 | * if any interrupts are already enabled for the primary | ||
53 | * core (e.g. timer irq), then they will not have been enabled | ||
54 | * for us: do so | ||
55 | */ | ||
56 | gic_secondary_init(0); | ||
57 | |||
58 | /* | ||
59 | * let the primary processor know we're out of the | 51 | * let the primary processor know we're out of the |
60 | * pen, then head off into the C entry point | 52 | * pen, then head off into the C entry point |
61 | */ | 53 | */ |
diff --git a/arch/arm/mach-s3c24xx/irq.c b/arch/arm/mach-s3c24xx/irq.c index cb9f5e011e73..b6fac28a0034 100644 --- a/arch/arm/mach-s3c24xx/irq.c +++ b/arch/arm/mach-s3c24xx/irq.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/ioport.h> | 25 | #include <linux/ioport.h> |
26 | #include <linux/device.h> | 26 | #include <linux/device.h> |
27 | #include <linux/irqdomain.h> | 27 | #include <linux/irqdomain.h> |
28 | #include <linux/irqchip/chained_irq.h> | ||
28 | 29 | ||
29 | #include <asm/mach/irq.h> | 30 | #include <asm/mach/irq.h> |
30 | 31 | ||
diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c index 8225c16b371b..e38691b4d0dd 100644 --- a/arch/arm/mach-shmobile/smp-emev2.c +++ b/arch/arm/mach-shmobile/smp-emev2.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
26 | #include <linux/irqchip/arm-gic.h> | ||
27 | #include <mach/common.h> | 26 | #include <mach/common.h> |
28 | #include <mach/emev2.h> | 27 | #include <mach/emev2.h> |
29 | #include <asm/smp_plat.h> | 28 | #include <asm/smp_plat.h> |
@@ -31,11 +30,6 @@ | |||
31 | 30 | ||
32 | #define EMEV2_SCU_BASE 0x1e000000 | 31 | #define EMEV2_SCU_BASE 0x1e000000 |
33 | 32 | ||
34 | static void __cpuinit emev2_secondary_init(unsigned int cpu) | ||
35 | { | ||
36 | gic_secondary_init(0); | ||
37 | } | ||
38 | |||
39 | static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct *idle) | 33 | static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct *idle) |
40 | { | 34 | { |
41 | arch_send_wakeup_ipi_mask(cpumask_of(cpu_logical_map(cpu))); | 35 | arch_send_wakeup_ipi_mask(cpumask_of(cpu_logical_map(cpu))); |
@@ -69,6 +63,5 @@ static void __init emev2_smp_init_cpus(void) | |||
69 | struct smp_operations emev2_smp_ops __initdata = { | 63 | struct smp_operations emev2_smp_ops __initdata = { |
70 | .smp_init_cpus = emev2_smp_init_cpus, | 64 | .smp_init_cpus = emev2_smp_init_cpus, |
71 | .smp_prepare_cpus = emev2_smp_prepare_cpus, | 65 | .smp_prepare_cpus = emev2_smp_prepare_cpus, |
72 | .smp_secondary_init = emev2_secondary_init, | ||
73 | .smp_boot_secondary = emev2_boot_secondary, | 66 | .smp_boot_secondary = emev2_boot_secondary, |
74 | }; | 67 | }; |
diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c index ea4535a5c4e2..a853bf182ed5 100644 --- a/arch/arm/mach-shmobile/smp-r8a7779.c +++ b/arch/arm/mach-shmobile/smp-r8a7779.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
26 | #include <linux/irqchip/arm-gic.h> | ||
27 | #include <mach/common.h> | 26 | #include <mach/common.h> |
28 | #include <mach/r8a7779.h> | 27 | #include <mach/r8a7779.h> |
29 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
@@ -82,11 +81,6 @@ static int r8a7779_platform_cpu_kill(unsigned int cpu) | |||
82 | return ret ? ret : 1; | 81 | return ret ? ret : 1; |
83 | } | 82 | } |
84 | 83 | ||
85 | static void __cpuinit r8a7779_secondary_init(unsigned int cpu) | ||
86 | { | ||
87 | gic_secondary_init(0); | ||
88 | } | ||
89 | |||
90 | static int __cpuinit r8a7779_boot_secondary(unsigned int cpu, struct task_struct *idle) | 84 | static int __cpuinit r8a7779_boot_secondary(unsigned int cpu, struct task_struct *idle) |
91 | { | 85 | { |
92 | struct r8a7779_pm_ch *ch = NULL; | 86 | struct r8a7779_pm_ch *ch = NULL; |
@@ -181,7 +175,6 @@ static int r8a7779_cpu_disable(unsigned int cpu) | |||
181 | struct smp_operations r8a7779_smp_ops __initdata = { | 175 | struct smp_operations r8a7779_smp_ops __initdata = { |
182 | .smp_init_cpus = r8a7779_smp_init_cpus, | 176 | .smp_init_cpus = r8a7779_smp_init_cpus, |
183 | .smp_prepare_cpus = r8a7779_smp_prepare_cpus, | 177 | .smp_prepare_cpus = r8a7779_smp_prepare_cpus, |
184 | .smp_secondary_init = r8a7779_secondary_init, | ||
185 | .smp_boot_secondary = r8a7779_boot_secondary, | 178 | .smp_boot_secondary = r8a7779_boot_secondary, |
186 | #ifdef CONFIG_HOTPLUG_CPU | 179 | #ifdef CONFIG_HOTPLUG_CPU |
187 | .cpu_kill = r8a7779_cpu_kill, | 180 | .cpu_kill = r8a7779_cpu_kill, |
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c index 5ae502b16437..bf79626ee5a4 100644 --- a/arch/arm/mach-shmobile/smp-sh73a0.c +++ b/arch/arm/mach-shmobile/smp-sh73a0.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
26 | #include <linux/irqchip/arm-gic.h> | ||
27 | #include <mach/common.h> | 26 | #include <mach/common.h> |
28 | #include <asm/cacheflush.h> | 27 | #include <asm/cacheflush.h> |
29 | #include <asm/smp_plat.h> | 28 | #include <asm/smp_plat.h> |
@@ -49,11 +48,6 @@ void __init sh73a0_register_twd(void) | |||
49 | } | 48 | } |
50 | #endif | 49 | #endif |
51 | 50 | ||
52 | static void __cpuinit sh73a0_secondary_init(unsigned int cpu) | ||
53 | { | ||
54 | gic_secondary_init(0); | ||
55 | } | ||
56 | |||
57 | static int __cpuinit sh73a0_boot_secondary(unsigned int cpu, struct task_struct *idle) | 51 | static int __cpuinit sh73a0_boot_secondary(unsigned int cpu, struct task_struct *idle) |
58 | { | 52 | { |
59 | cpu = cpu_logical_map(cpu); | 53 | cpu = cpu_logical_map(cpu); |
@@ -134,7 +128,6 @@ static int sh73a0_cpu_disable(unsigned int cpu) | |||
134 | struct smp_operations sh73a0_smp_ops __initdata = { | 128 | struct smp_operations sh73a0_smp_ops __initdata = { |
135 | .smp_init_cpus = sh73a0_smp_init_cpus, | 129 | .smp_init_cpus = sh73a0_smp_init_cpus, |
136 | .smp_prepare_cpus = sh73a0_smp_prepare_cpus, | 130 | .smp_prepare_cpus = sh73a0_smp_prepare_cpus, |
137 | .smp_secondary_init = sh73a0_secondary_init, | ||
138 | .smp_boot_secondary = sh73a0_boot_secondary, | 131 | .smp_boot_secondary = sh73a0_boot_secondary, |
139 | #ifdef CONFIG_HOTPLUG_CPU | 132 | #ifdef CONFIG_HOTPLUG_CPU |
140 | .cpu_kill = sh73a0_cpu_kill, | 133 | .cpu_kill = sh73a0_cpu_kill, |
diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c index b907fb986d9e..b51ce8c7929d 100644 --- a/arch/arm/mach-socfpga/platsmp.c +++ b/arch/arm/mach-socfpga/platsmp.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/of.h> | 23 | #include <linux/of.h> |
24 | #include <linux/of_address.h> | 24 | #include <linux/of_address.h> |
25 | #include <linux/irqchip/arm-gic.h> | ||
26 | 25 | ||
27 | #include <asm/cacheflush.h> | 26 | #include <asm/cacheflush.h> |
28 | #include <asm/smp_scu.h> | 27 | #include <asm/smp_scu.h> |
@@ -30,16 +29,6 @@ | |||
30 | 29 | ||
31 | #include "core.h" | 30 | #include "core.h" |
32 | 31 | ||
33 | static void __cpuinit socfpga_secondary_init(unsigned int cpu) | ||
34 | { | ||
35 | /* | ||
36 | * if any interrupts are already enabled for the primary | ||
37 | * core (e.g. timer irq), then they will not have been enabled | ||
38 | * for us: do so | ||
39 | */ | ||
40 | gic_secondary_init(0); | ||
41 | } | ||
42 | |||
43 | static int __cpuinit socfpga_boot_secondary(unsigned int cpu, struct task_struct *idle) | 32 | static int __cpuinit socfpga_boot_secondary(unsigned int cpu, struct task_struct *idle) |
44 | { | 33 | { |
45 | int trampoline_size = &secondary_trampoline_end - &secondary_trampoline; | 34 | int trampoline_size = &secondary_trampoline_end - &secondary_trampoline; |
@@ -106,7 +95,6 @@ static void socfpga_cpu_die(unsigned int cpu) | |||
106 | struct smp_operations socfpga_smp_ops __initdata = { | 95 | struct smp_operations socfpga_smp_ops __initdata = { |
107 | .smp_init_cpus = socfpga_smp_init_cpus, | 96 | .smp_init_cpus = socfpga_smp_init_cpus, |
108 | .smp_prepare_cpus = socfpga_smp_prepare_cpus, | 97 | .smp_prepare_cpus = socfpga_smp_prepare_cpus, |
109 | .smp_secondary_init = socfpga_secondary_init, | ||
110 | .smp_boot_secondary = socfpga_boot_secondary, | 98 | .smp_boot_secondary = socfpga_boot_secondary, |
111 | #ifdef CONFIG_HOTPLUG_CPU | 99 | #ifdef CONFIG_HOTPLUG_CPU |
112 | .cpu_die = socfpga_cpu_die, | 100 | .cpu_die = socfpga_cpu_die, |
diff --git a/arch/arm/mach-spear13xx/platsmp.c b/arch/arm/mach-spear13xx/platsmp.c index af4ade61cd95..551c69c9a228 100644 --- a/arch/arm/mach-spear13xx/platsmp.c +++ b/arch/arm/mach-spear13xx/platsmp.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/jiffies.h> | 15 | #include <linux/jiffies.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/smp.h> | 17 | #include <linux/smp.h> |
18 | #include <linux/irqchip/arm-gic.h> | ||
19 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
20 | #include <asm/smp_scu.h> | 19 | #include <asm/smp_scu.h> |
21 | #include <mach/spear.h> | 20 | #include <mach/spear.h> |
@@ -28,13 +27,6 @@ static void __iomem *scu_base = IOMEM(VA_SCU_BASE); | |||
28 | static void __cpuinit spear13xx_secondary_init(unsigned int cpu) | 27 | static void __cpuinit spear13xx_secondary_init(unsigned int cpu) |
29 | { | 28 | { |
30 | /* | 29 | /* |
31 | * if any interrupts are already enabled for the primary | ||
32 | * core (e.g. timer irq), then they will not have been enabled | ||
33 | * for us: do so | ||
34 | */ | ||
35 | gic_secondary_init(0); | ||
36 | |||
37 | /* | ||
38 | * let the primary processor know we're out of the | 30 | * let the primary processor know we're out of the |
39 | * pen, then head off into the C entry point | 31 | * pen, then head off into the C entry point |
40 | */ | 32 | */ |
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c index 516aab28fe34..0c4963bd4b44 100644 --- a/arch/arm/mach-tegra/platsmp.c +++ b/arch/arm/mach-tegra/platsmp.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/jiffies.h> | 18 | #include <linux/jiffies.h> |
19 | #include <linux/smp.h> | 19 | #include <linux/smp.h> |
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | #include <linux/irqchip/arm-gic.h> | ||
22 | #include <linux/clk/tegra.h> | 21 | #include <linux/clk/tegra.h> |
23 | 22 | ||
24 | #include <asm/cacheflush.h> | 23 | #include <asm/cacheflush.h> |
@@ -38,13 +37,6 @@ static cpumask_t tegra_cpu_init_mask; | |||
38 | 37 | ||
39 | static void __cpuinit tegra_secondary_init(unsigned int cpu) | 38 | static void __cpuinit tegra_secondary_init(unsigned int cpu) |
40 | { | 39 | { |
41 | /* | ||
42 | * if any interrupts are already enabled for the primary | ||
43 | * core (e.g. timer irq), then they will not have been enabled | ||
44 | * for us: do so | ||
45 | */ | ||
46 | gic_secondary_init(0); | ||
47 | |||
48 | cpumask_set_cpu(cpu, &tegra_cpu_init_mask); | 40 | cpumask_set_cpu(cpu, &tegra_cpu_init_mask); |
49 | } | 41 | } |
50 | 42 | ||
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c index 18f7af339dc9..152b1309b9af 100644 --- a/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/device.h> | 16 | #include <linux/device.h> |
17 | #include <linux/smp.h> | 17 | #include <linux/smp.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/irqchip/arm-gic.h> | ||
20 | 19 | ||
21 | #include <asm/cacheflush.h> | 20 | #include <asm/cacheflush.h> |
22 | #include <asm/smp_plat.h> | 21 | #include <asm/smp_plat.h> |
@@ -58,13 +57,6 @@ static DEFINE_SPINLOCK(boot_lock); | |||
58 | static void __cpuinit ux500_secondary_init(unsigned int cpu) | 57 | static void __cpuinit ux500_secondary_init(unsigned int cpu) |
59 | { | 58 | { |
60 | /* | 59 | /* |
61 | * if any interrupts are already enabled for the primary | ||
62 | * core (e.g. timer irq), then they will not have been enabled | ||
63 | * for us: do so | ||
64 | */ | ||
65 | gic_secondary_init(0); | ||
66 | |||
67 | /* | ||
68 | * let the primary processor know we're out of the | 60 | * let the primary processor know we're out of the |
69 | * pen, then head off into the C entry point | 61 | * pen, then head off into the C entry point |
70 | */ | 62 | */ |
diff --git a/arch/arm/mach-virt/platsmp.c b/arch/arm/mach-virt/platsmp.c index 8badaabe70a1..f4143f5bfa5b 100644 --- a/arch/arm/mach-virt/platsmp.c +++ b/arch/arm/mach-virt/platsmp.c | |||
@@ -21,8 +21,6 @@ | |||
21 | #include <linux/smp.h> | 21 | #include <linux/smp.h> |
22 | #include <linux/of.h> | 22 | #include <linux/of.h> |
23 | 23 | ||
24 | #include <linux/irqchip/arm-gic.h> | ||
25 | |||
26 | #include <asm/psci.h> | 24 | #include <asm/psci.h> |
27 | #include <asm/smp_plat.h> | 25 | #include <asm/smp_plat.h> |
28 | 26 | ||
@@ -45,14 +43,8 @@ static int __cpuinit virt_boot_secondary(unsigned int cpu, | |||
45 | return -ENODEV; | 43 | return -ENODEV; |
46 | } | 44 | } |
47 | 45 | ||
48 | static void __cpuinit virt_secondary_init(unsigned int cpu) | ||
49 | { | ||
50 | gic_secondary_init(0); | ||
51 | } | ||
52 | |||
53 | struct smp_operations __initdata virt_smp_ops = { | 46 | struct smp_operations __initdata virt_smp_ops = { |
54 | .smp_init_cpus = virt_smp_init_cpus, | 47 | .smp_init_cpus = virt_smp_init_cpus, |
55 | .smp_prepare_cpus = virt_smp_prepare_cpus, | 48 | .smp_prepare_cpus = virt_smp_prepare_cpus, |
56 | .smp_secondary_init = virt_secondary_init, | ||
57 | .smp_boot_secondary = virt_boot_secondary, | 49 | .smp_boot_secondary = virt_boot_secondary, |
58 | }; | 50 | }; |
diff --git a/arch/arm/plat-samsung/irq-vic-timer.c b/arch/arm/plat-samsung/irq-vic-timer.c index f980cf3d2baa..5d205e74e495 100644 --- a/arch/arm/plat-samsung/irq-vic-timer.c +++ b/arch/arm/plat-samsung/irq-vic-timer.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | #include <linux/irq.h> | 18 | #include <linux/irq.h> |
19 | #include <linux/irqchip/chained_irq.h> | ||
19 | #include <linux/io.h> | 20 | #include <linux/io.h> |
20 | 21 | ||
21 | #include <mach/map.h> | 22 | #include <mach/map.h> |
@@ -23,8 +24,6 @@ | |||
23 | #include <plat/irq-vic-timer.h> | 24 | #include <plat/irq-vic-timer.h> |
24 | #include <plat/regs-timer.h> | 25 | #include <plat/regs-timer.h> |
25 | 26 | ||
26 | #include <asm/mach/irq.h> | ||
27 | |||
28 | static void s3c_irq_demux_vic_timer(unsigned int irq, struct irq_desc *desc) | 27 | static void s3c_irq_demux_vic_timer(unsigned int irq, struct irq_desc *desc) |
29 | { | 28 | { |
30 | struct irq_chip *chip = irq_get_chip(irq); | 29 | struct irq_chip *chip = irq_get_chip(irq); |
diff --git a/arch/arm/plat-samsung/s5p-irq-gpioint.c b/arch/arm/plat-samsung/s5p-irq-gpioint.c index bae56131a50a..fafdb059043a 100644 --- a/arch/arm/plat-samsung/s5p-irq-gpioint.c +++ b/arch/arm/plat-samsung/s5p-irq-gpioint.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/irqchip/chained_irq.h> | ||
17 | #include <linux/io.h> | 18 | #include <linux/io.h> |
18 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
19 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
@@ -22,8 +23,6 @@ | |||
22 | #include <plat/gpio-core.h> | 23 | #include <plat/gpio-core.h> |
23 | #include <plat/gpio-cfg.h> | 24 | #include <plat/gpio-cfg.h> |
24 | 25 | ||
25 | #include <asm/mach/irq.h> | ||
26 | |||
27 | #define GPIO_BASE(chip) ((void __iomem *)((unsigned long)((chip)->base) & 0xFFFFF000u)) | 26 | #define GPIO_BASE(chip) ((void __iomem *)((unsigned long)((chip)->base) & 0xFFFFF000u)) |
28 | 27 | ||
29 | #define CON_OFFSET 0x700 | 28 | #define CON_OFFSET 0x700 |
diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c index f2ac15561778..1e1b2d769748 100644 --- a/arch/arm/plat-versatile/platsmp.c +++ b/arch/arm/plat-versatile/platsmp.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/jiffies.h> | 15 | #include <linux/jiffies.h> |
16 | #include <linux/smp.h> | 16 | #include <linux/smp.h> |
17 | #include <linux/irqchip/arm-gic.h> | ||
18 | 17 | ||
19 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
20 | #include <asm/smp_plat.h> | 19 | #include <asm/smp_plat.h> |
@@ -37,13 +36,6 @@ static DEFINE_SPINLOCK(boot_lock); | |||
37 | void __cpuinit versatile_secondary_init(unsigned int cpu) | 36 | void __cpuinit versatile_secondary_init(unsigned int cpu) |
38 | { | 37 | { |
39 | /* | 38 | /* |
40 | * if any interrupts are already enabled for the primary | ||
41 | * core (e.g. timer irq), then they will not have been enabled | ||
42 | * for us: do so | ||
43 | */ | ||
44 | gic_secondary_init(0); | ||
45 | |||
46 | /* | ||
47 | * let the primary processor know we're out of the | 39 | * let the primary processor know we're out of the |
48 | * pen, then head off into the C entry point | 40 | * pen, then head off into the C entry point |
49 | */ | 41 | */ |