diff options
-rw-r--r-- | arch/mips/cavium-octeon/smp.c | 2 | ||||
-rw-r--r-- | arch/mips/include/asm/smp.h | 2 | ||||
-rw-r--r-- | arch/mips/kernel/smp-bmips.c | 4 | ||||
-rw-r--r-- | arch/mips/kernel/smp.c | 10 | ||||
-rw-r--r-- | arch/mips/lantiq/irq.c | 2 | ||||
-rw-r--r-- | arch/mips/loongson64/loongson-3/smp.c | 7 | ||||
-rw-r--r-- | arch/mips/mti-malta/malta-int.c | 2 | ||||
-rw-r--r-- | arch/mips/netlogic/common/smp.c | 2 | ||||
-rw-r--r-- | arch/mips/paravirt/paravirt-smp.c | 2 | ||||
-rw-r--r-- | arch/mips/pmcs-msp71xx/msp_smp.c | 2 | ||||
-rw-r--r-- | arch/mips/sgi-ip27/ip27-irq.c | 8 | ||||
-rw-r--r-- | arch/mips/sibyte/bcm1480/smp.c | 9 | ||||
-rw-r--r-- | arch/mips/sibyte/sb1250/smp.c | 7 | ||||
-rw-r--r-- | drivers/irqchip/irq-mips-gic.c | 2 |
14 files changed, 30 insertions, 31 deletions
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c index 56f5d080ef9d..b7fa9ae28c36 100644 --- a/arch/mips/cavium-octeon/smp.c +++ b/arch/mips/cavium-octeon/smp.c | |||
@@ -42,7 +42,7 @@ static irqreturn_t mailbox_interrupt(int irq, void *dev_id) | |||
42 | cvmx_write_csr(CVMX_CIU_MBOX_CLRX(coreid), action); | 42 | cvmx_write_csr(CVMX_CIU_MBOX_CLRX(coreid), action); |
43 | 43 | ||
44 | if (action & SMP_CALL_FUNCTION) | 44 | if (action & SMP_CALL_FUNCTION) |
45 | smp_call_function_interrupt(); | 45 | generic_smp_call_function_interrupt(); |
46 | if (action & SMP_RESCHEDULE_YOURSELF) | 46 | if (action & SMP_RESCHEDULE_YOURSELF) |
47 | scheduler_ipi(); | 47 | scheduler_ipi(); |
48 | 48 | ||
diff --git a/arch/mips/include/asm/smp.h b/arch/mips/include/asm/smp.h index 16f1ea9ab191..03722d4326a1 100644 --- a/arch/mips/include/asm/smp.h +++ b/arch/mips/include/asm/smp.h | |||
@@ -83,8 +83,6 @@ static inline void __cpu_die(unsigned int cpu) | |||
83 | extern void play_dead(void); | 83 | extern void play_dead(void); |
84 | #endif | 84 | #endif |
85 | 85 | ||
86 | extern asmlinkage void smp_call_function_interrupt(void); | ||
87 | |||
88 | static inline void arch_send_call_function_single_ipi(int cpu) | 86 | static inline void arch_send_call_function_single_ipi(int cpu) |
89 | { | 87 | { |
90 | extern struct plat_smp_ops *mp_ops; /* private */ | 88 | extern struct plat_smp_ops *mp_ops; /* private */ |
diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c index 336708ae5c5b..78cf8c2f1de0 100644 --- a/arch/mips/kernel/smp-bmips.c +++ b/arch/mips/kernel/smp-bmips.c | |||
@@ -284,7 +284,7 @@ static irqreturn_t bmips5000_ipi_interrupt(int irq, void *dev_id) | |||
284 | if (action == 0) | 284 | if (action == 0) |
285 | scheduler_ipi(); | 285 | scheduler_ipi(); |
286 | else | 286 | else |
287 | smp_call_function_interrupt(); | 287 | generic_smp_call_function_interrupt(); |
288 | 288 | ||
289 | return IRQ_HANDLED; | 289 | return IRQ_HANDLED; |
290 | } | 290 | } |
@@ -336,7 +336,7 @@ static irqreturn_t bmips43xx_ipi_interrupt(int irq, void *dev_id) | |||
336 | if (action & SMP_RESCHEDULE_YOURSELF) | 336 | if (action & SMP_RESCHEDULE_YOURSELF) |
337 | scheduler_ipi(); | 337 | scheduler_ipi(); |
338 | if (action & SMP_CALL_FUNCTION) | 338 | if (action & SMP_CALL_FUNCTION) |
339 | smp_call_function_interrupt(); | 339 | generic_smp_call_function_interrupt(); |
340 | 340 | ||
341 | return IRQ_HANDLED; | 341 | return IRQ_HANDLED; |
342 | } | 342 | } |
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index d0744cc77ea7..a31896c33716 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -192,16 +192,6 @@ asmlinkage void start_secondary(void) | |||
192 | cpu_startup_entry(CPUHP_ONLINE); | 192 | cpu_startup_entry(CPUHP_ONLINE); |
193 | } | 193 | } |
194 | 194 | ||
195 | /* | ||
196 | * Call into both interrupt handlers, as we share the IPI for them | ||
197 | */ | ||
198 | void __irq_entry smp_call_function_interrupt(void) | ||
199 | { | ||
200 | irq_enter(); | ||
201 | generic_smp_call_function_interrupt(); | ||
202 | irq_exit(); | ||
203 | } | ||
204 | |||
205 | static void stop_this_cpu(void *dummy) | 195 | static void stop_this_cpu(void *dummy) |
206 | { | 196 | { |
207 | /* | 197 | /* |
diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c index 6ab10573490d..be18648cb8c8 100644 --- a/arch/mips/lantiq/irq.c +++ b/arch/mips/lantiq/irq.c | |||
@@ -293,7 +293,7 @@ static irqreturn_t ipi_resched_interrupt(int irq, void *dev_id) | |||
293 | 293 | ||
294 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) | 294 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) |
295 | { | 295 | { |
296 | smp_call_function_interrupt(); | 296 | generic_smp_call_function_interrupt(); |
297 | return IRQ_HANDLED; | 297 | return IRQ_HANDLED; |
298 | } | 298 | } |
299 | 299 | ||
diff --git a/arch/mips/loongson64/loongson-3/smp.c b/arch/mips/loongson64/loongson-3/smp.c index 509877c6e9d9..1a4738a8f2d3 100644 --- a/arch/mips/loongson64/loongson-3/smp.c +++ b/arch/mips/loongson64/loongson-3/smp.c | |||
@@ -266,8 +266,11 @@ void loongson3_ipi_interrupt(struct pt_regs *regs) | |||
266 | if (action & SMP_RESCHEDULE_YOURSELF) | 266 | if (action & SMP_RESCHEDULE_YOURSELF) |
267 | scheduler_ipi(); | 267 | scheduler_ipi(); |
268 | 268 | ||
269 | if (action & SMP_CALL_FUNCTION) | 269 | if (action & SMP_CALL_FUNCTION) { |
270 | smp_call_function_interrupt(); | 270 | irq_enter(); |
271 | generic_smp_call_function_interrupt(); | ||
272 | irq_exit(); | ||
273 | } | ||
271 | 274 | ||
272 | if (action & SMP_ASK_C0COUNT) { | 275 | if (action & SMP_ASK_C0COUNT) { |
273 | BUG_ON(cpu != 0); | 276 | BUG_ON(cpu != 0); |
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c index d1392f8f5811..fa8f591f3713 100644 --- a/arch/mips/mti-malta/malta-int.c +++ b/arch/mips/mti-malta/malta-int.c | |||
@@ -222,7 +222,7 @@ static irqreturn_t ipi_resched_interrupt(int irq, void *dev_id) | |||
222 | 222 | ||
223 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) | 223 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) |
224 | { | 224 | { |
225 | smp_call_function_interrupt(); | 225 | generic_smp_call_function_interrupt(); |
226 | 226 | ||
227 | return IRQ_HANDLED; | 227 | return IRQ_HANDLED; |
228 | } | 228 | } |
diff --git a/arch/mips/netlogic/common/smp.c b/arch/mips/netlogic/common/smp.c index dc3e327fbbac..f5fff228b347 100644 --- a/arch/mips/netlogic/common/smp.c +++ b/arch/mips/netlogic/common/smp.c | |||
@@ -86,7 +86,7 @@ void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc) | |||
86 | { | 86 | { |
87 | clear_c0_eimr(irq); | 87 | clear_c0_eimr(irq); |
88 | ack_c0_eirr(irq); | 88 | ack_c0_eirr(irq); |
89 | smp_call_function_interrupt(); | 89 | generic_smp_call_function_interrupt(); |
90 | set_c0_eimr(irq); | 90 | set_c0_eimr(irq); |
91 | } | 91 | } |
92 | 92 | ||
diff --git a/arch/mips/paravirt/paravirt-smp.c b/arch/mips/paravirt/paravirt-smp.c index 42181c7105df..f8d3e081b2eb 100644 --- a/arch/mips/paravirt/paravirt-smp.c +++ b/arch/mips/paravirt/paravirt-smp.c | |||
@@ -114,7 +114,7 @@ static irqreturn_t paravirt_reched_interrupt(int irq, void *dev_id) | |||
114 | 114 | ||
115 | static irqreturn_t paravirt_function_interrupt(int irq, void *dev_id) | 115 | static irqreturn_t paravirt_function_interrupt(int irq, void *dev_id) |
116 | { | 116 | { |
117 | smp_call_function_interrupt(); | 117 | generic_smp_call_function_interrupt(); |
118 | return IRQ_HANDLED; | 118 | return IRQ_HANDLED; |
119 | } | 119 | } |
120 | 120 | ||
diff --git a/arch/mips/pmcs-msp71xx/msp_smp.c b/arch/mips/pmcs-msp71xx/msp_smp.c index 10170580a2de..ffa0f7101a97 100644 --- a/arch/mips/pmcs-msp71xx/msp_smp.c +++ b/arch/mips/pmcs-msp71xx/msp_smp.c | |||
@@ -44,7 +44,7 @@ static irqreturn_t ipi_resched_interrupt(int irq, void *dev_id) | |||
44 | 44 | ||
45 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) | 45 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) |
46 | { | 46 | { |
47 | smp_call_function_interrupt(); | 47 | generic_smp_call_function_interrupt(); |
48 | 48 | ||
49 | return IRQ_HANDLED; | 49 | return IRQ_HANDLED; |
50 | } | 50 | } |
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c index 3fbaef97a1b8..16ec4e12daa3 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c | |||
@@ -107,10 +107,14 @@ static void ip27_do_irq_mask0(void) | |||
107 | scheduler_ipi(); | 107 | scheduler_ipi(); |
108 | } else if (pend0 & (1UL << CPU_CALL_A_IRQ)) { | 108 | } else if (pend0 & (1UL << CPU_CALL_A_IRQ)) { |
109 | LOCAL_HUB_CLR_INTR(CPU_CALL_A_IRQ); | 109 | LOCAL_HUB_CLR_INTR(CPU_CALL_A_IRQ); |
110 | smp_call_function_interrupt(); | 110 | irq_enter(); |
111 | generic_smp_call_function_interrupt(); | ||
112 | irq_exit(); | ||
111 | } else if (pend0 & (1UL << CPU_CALL_B_IRQ)) { | 113 | } else if (pend0 & (1UL << CPU_CALL_B_IRQ)) { |
112 | LOCAL_HUB_CLR_INTR(CPU_CALL_B_IRQ); | 114 | LOCAL_HUB_CLR_INTR(CPU_CALL_B_IRQ); |
113 | smp_call_function_interrupt(); | 115 | irq_enter(); |
116 | generic_smp_call_function_interrupt(); | ||
117 | irq_exit(); | ||
114 | } else | 118 | } else |
115 | #endif | 119 | #endif |
116 | { | 120 | { |
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c index af7d44edd9a8..4c71aea25663 100644 --- a/arch/mips/sibyte/bcm1480/smp.c +++ b/arch/mips/sibyte/bcm1480/smp.c | |||
@@ -29,8 +29,6 @@ | |||
29 | #include <asm/sibyte/bcm1480_regs.h> | 29 | #include <asm/sibyte/bcm1480_regs.h> |
30 | #include <asm/sibyte/bcm1480_int.h> | 30 | #include <asm/sibyte/bcm1480_int.h> |
31 | 31 | ||
32 | extern void smp_call_function_interrupt(void); | ||
33 | |||
34 | /* | 32 | /* |
35 | * These are routines for dealing with the bcm1480 smp capabilities | 33 | * These are routines for dealing with the bcm1480 smp capabilities |
36 | * independent of board/firmware | 34 | * independent of board/firmware |
@@ -184,6 +182,9 @@ void bcm1480_mailbox_interrupt(void) | |||
184 | if (action & SMP_RESCHEDULE_YOURSELF) | 182 | if (action & SMP_RESCHEDULE_YOURSELF) |
185 | scheduler_ipi(); | 183 | scheduler_ipi(); |
186 | 184 | ||
187 | if (action & SMP_CALL_FUNCTION) | 185 | if (action & SMP_CALL_FUNCTION) { |
188 | smp_call_function_interrupt(); | 186 | irq_enter(); |
187 | generic_smp_call_function_interrupt(); | ||
188 | irq_exit(); | ||
189 | } | ||
189 | } | 190 | } |
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c index c0c4b3f88a08..1cf66f5ff23d 100644 --- a/arch/mips/sibyte/sb1250/smp.c +++ b/arch/mips/sibyte/sb1250/smp.c | |||
@@ -172,6 +172,9 @@ void sb1250_mailbox_interrupt(void) | |||
172 | if (action & SMP_RESCHEDULE_YOURSELF) | 172 | if (action & SMP_RESCHEDULE_YOURSELF) |
173 | scheduler_ipi(); | 173 | scheduler_ipi(); |
174 | 174 | ||
175 | if (action & SMP_CALL_FUNCTION) | 175 | if (action & SMP_CALL_FUNCTION) { |
176 | smp_call_function_interrupt(); | 176 | irq_enter(); |
177 | generic_smp_call_function_interrupt(); | ||
178 | irq_exit(); | ||
179 | } | ||
177 | } | 180 | } |
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c index b7d54d428b5e..ff4be0515a0d 100644 --- a/drivers/irqchip/irq-mips-gic.c +++ b/drivers/irqchip/irq-mips-gic.c | |||
@@ -538,7 +538,7 @@ static irqreturn_t ipi_resched_interrupt(int irq, void *dev_id) | |||
538 | 538 | ||
539 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) | 539 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) |
540 | { | 540 | { |
541 | smp_call_function_interrupt(); | 541 | generic_smp_call_function_interrupt(); |
542 | 542 | ||
543 | return IRQ_HANDLED; | 543 | return IRQ_HANDLED; |
544 | } | 544 | } |