diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2013-01-14 13:05:37 -0500 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2013-03-26 12:12:02 -0400 |
commit | c0114709ed85a5693eb74acdfa03d94f7f12e5b8 (patch) | |
tree | 372c5cee96580d73e638d25a2b169a64b82bc908 /arch | |
parent | aec0095653cd9812b9a15df0315364cc6d094c59 (diff) |
irqchip: gic: Perform the gic_secondary_init() call via CPU notifier
All the calls to gic_secondary_init() pass 0 as the first argument.
Since this function is called on each CPU when starting, it can be done
in a platform-independent way via a CPU notifier registered by the GIC
code.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Tested-by: Simon Horman <horms+renesas@verge.net.au>
Acked-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
Tested-by: Dinh Nguyen <dinguyen@altera.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: David Brown <davidb@codeaurora.org>
Cc: Bryan Huntsman <bryanh@codeaurora.org>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Magnus Damm <magnus.damm@gmail.com>
Cc: Shiraz Hashim <shiraz.hashim@st.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Barry Song <baohua.song@csr.com>
Diffstat (limited to 'arch')
-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-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-versatile/platsmp.c | 8 |
15 files changed, 0 insertions, 123 deletions
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-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c index 953eb1f9388d..384e27dd3601 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> |
@@ -85,11 +84,6 @@ static int __maybe_unused emev2_cpu_kill(unsigned int cpu) | |||
85 | } | 84 | } |
86 | 85 | ||
87 | 86 | ||
88 | static void __cpuinit emev2_secondary_init(unsigned int cpu) | ||
89 | { | ||
90 | gic_secondary_init(0); | ||
91 | } | ||
92 | |||
93 | static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct *idle) | 87 | static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct *idle) |
94 | { | 88 | { |
95 | cpu = cpu_logical_map(cpu); | 89 | cpu = cpu_logical_map(cpu); |
@@ -124,7 +118,6 @@ static void __init emev2_smp_init_cpus(void) | |||
124 | struct smp_operations emev2_smp_ops __initdata = { | 118 | struct smp_operations emev2_smp_ops __initdata = { |
125 | .smp_init_cpus = emev2_smp_init_cpus, | 119 | .smp_init_cpus = emev2_smp_init_cpus, |
126 | .smp_prepare_cpus = emev2_smp_prepare_cpus, | 120 | .smp_prepare_cpus = emev2_smp_prepare_cpus, |
127 | .smp_secondary_init = emev2_secondary_init, | ||
128 | .smp_boot_secondary = emev2_boot_secondary, | 121 | .smp_boot_secondary = emev2_boot_secondary, |
129 | #ifdef CONFIG_HOTPLUG_CPU | 122 | #ifdef CONFIG_HOTPLUG_CPU |
130 | .cpu_kill = emev2_cpu_kill, | 123 | .cpu_kill = emev2_cpu_kill, |
diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c index 3a4acf23edcf..994906560edd 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/smp_plat.h> | 28 | #include <asm/smp_plat.h> |
@@ -132,11 +131,6 @@ static int __maybe_unused r8a7779_cpu_kill(unsigned int cpu) | |||
132 | } | 131 | } |
133 | 132 | ||
134 | 133 | ||
135 | static void __cpuinit r8a7779_secondary_init(unsigned int cpu) | ||
136 | { | ||
137 | gic_secondary_init(0); | ||
138 | } | ||
139 | |||
140 | static int __cpuinit r8a7779_boot_secondary(unsigned int cpu, struct task_struct *idle) | 134 | static int __cpuinit r8a7779_boot_secondary(unsigned int cpu, struct task_struct *idle) |
141 | { | 135 | { |
142 | struct r8a7779_pm_ch *ch = NULL; | 136 | struct r8a7779_pm_ch *ch = NULL; |
@@ -186,7 +180,6 @@ static void __init r8a7779_smp_init_cpus(void) | |||
186 | struct smp_operations r8a7779_smp_ops __initdata = { | 180 | struct smp_operations r8a7779_smp_ops __initdata = { |
187 | .smp_init_cpus = r8a7779_smp_init_cpus, | 181 | .smp_init_cpus = r8a7779_smp_init_cpus, |
188 | .smp_prepare_cpus = r8a7779_smp_prepare_cpus, | 182 | .smp_prepare_cpus = r8a7779_smp_prepare_cpus, |
189 | .smp_secondary_init = r8a7779_secondary_init, | ||
190 | .smp_boot_secondary = r8a7779_boot_secondary, | 183 | .smp_boot_secondary = r8a7779_boot_secondary, |
191 | #ifdef CONFIG_HOTPLUG_CPU | 184 | #ifdef CONFIG_HOTPLUG_CPU |
192 | .cpu_kill = r8a7779_cpu_kill, | 185 | .cpu_kill = r8a7779_cpu_kill, |
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c index acb46a94ccdf..d0f9aca22477 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> |
@@ -59,11 +58,6 @@ static unsigned int __init sh73a0_get_core_count(void) | |||
59 | return scu_get_core_count(scu_base); | 58 | return scu_get_core_count(scu_base); |
60 | } | 59 | } |
61 | 60 | ||
62 | static void __cpuinit sh73a0_secondary_init(unsigned int cpu) | ||
63 | { | ||
64 | gic_secondary_init(0); | ||
65 | } | ||
66 | |||
67 | static int __cpuinit sh73a0_boot_secondary(unsigned int cpu, struct task_struct *idle) | 61 | static int __cpuinit sh73a0_boot_secondary(unsigned int cpu, struct task_struct *idle) |
68 | { | 62 | { |
69 | cpu = cpu_logical_map(cpu); | 63 | cpu = cpu_logical_map(cpu); |
@@ -138,7 +132,6 @@ static void sh73a0_cpu_die(unsigned int cpu) | |||
138 | struct smp_operations sh73a0_smp_ops __initdata = { | 132 | struct smp_operations sh73a0_smp_ops __initdata = { |
139 | .smp_init_cpus = sh73a0_smp_init_cpus, | 133 | .smp_init_cpus = sh73a0_smp_init_cpus, |
140 | .smp_prepare_cpus = sh73a0_smp_prepare_cpus, | 134 | .smp_prepare_cpus = sh73a0_smp_prepare_cpus, |
141 | .smp_secondary_init = sh73a0_secondary_init, | ||
142 | .smp_boot_secondary = sh73a0_boot_secondary, | 135 | .smp_boot_secondary = sh73a0_boot_secondary, |
143 | #ifdef CONFIG_HOTPLUG_CPU | 136 | #ifdef CONFIG_HOTPLUG_CPU |
144 | .cpu_kill = sh73a0_cpu_kill, | 137 | .cpu_kill = sh73a0_cpu_kill, |
diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c index 84c60fa8daa0..ca14d1d5ac7f 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> |
@@ -33,16 +32,6 @@ | |||
33 | extern void __iomem *sys_manager_base_addr; | 32 | extern void __iomem *sys_manager_base_addr; |
34 | extern void __iomem *rst_manager_base_addr; | 33 | extern void __iomem *rst_manager_base_addr; |
35 | 34 | ||
36 | static void __cpuinit socfpga_secondary_init(unsigned int cpu) | ||
37 | { | ||
38 | /* | ||
39 | * if any interrupts are already enabled for the primary | ||
40 | * core (e.g. timer irq), then they will not have been enabled | ||
41 | * for us: do so | ||
42 | */ | ||
43 | gic_secondary_init(0); | ||
44 | } | ||
45 | |||
46 | static int __cpuinit socfpga_boot_secondary(unsigned int cpu, struct task_struct *idle) | 35 | static int __cpuinit socfpga_boot_secondary(unsigned int cpu, struct task_struct *idle) |
47 | { | 36 | { |
48 | int trampoline_size = &secondary_trampoline_end - &secondary_trampoline; | 37 | int trampoline_size = &secondary_trampoline_end - &secondary_trampoline; |
@@ -109,7 +98,6 @@ static void socfpga_cpu_die(unsigned int cpu) | |||
109 | struct smp_operations socfpga_smp_ops __initdata = { | 98 | struct smp_operations socfpga_smp_ops __initdata = { |
110 | .smp_init_cpus = socfpga_smp_init_cpus, | 99 | .smp_init_cpus = socfpga_smp_init_cpus, |
111 | .smp_prepare_cpus = socfpga_smp_prepare_cpus, | 100 | .smp_prepare_cpus = socfpga_smp_prepare_cpus, |
112 | .smp_secondary_init = socfpga_secondary_init, | ||
113 | .smp_boot_secondary = socfpga_boot_secondary, | 101 | .smp_boot_secondary = socfpga_boot_secondary, |
114 | #ifdef CONFIG_HOTPLUG_CPU | 102 | #ifdef CONFIG_HOTPLUG_CPU |
115 | .cpu_die = socfpga_cpu_die, | 103 | .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 2c6b3d55213b..9348d3c496a9 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> |
@@ -44,13 +43,6 @@ static cpumask_t tegra_cpu_init_mask; | |||
44 | 43 | ||
45 | static void __cpuinit tegra_secondary_init(unsigned int cpu) | 44 | static void __cpuinit tegra_secondary_init(unsigned int cpu) |
46 | { | 45 | { |
47 | /* | ||
48 | * if any interrupts are already enabled for the primary | ||
49 | * core (e.g. timer irq), then they will not have been enabled | ||
50 | * for us: do so | ||
51 | */ | ||
52 | gic_secondary_init(0); | ||
53 | |||
54 | cpumask_set_cpu(cpu, &tegra_cpu_init_mask); | 46 | cpumask_set_cpu(cpu, &tegra_cpu_init_mask); |
55 | } | 47 | } |
56 | 48 | ||
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-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 | */ |