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/arm/mach-shmobile | |
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/arm/mach-shmobile')
-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 |
3 files changed, 0 insertions, 21 deletions
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, |