diff options
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r-- | kernel/softirq.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c index 4eb3a0fa351e..c82d95a022ef 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -310,31 +310,21 @@ void irq_enter(void) | |||
310 | __irq_enter(); | 310 | __irq_enter(); |
311 | } | 311 | } |
312 | 312 | ||
313 | #ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED | ||
314 | static inline void invoke_softirq(void) | 313 | static inline void invoke_softirq(void) |
315 | { | 314 | { |
316 | if (!force_irqthreads) | 315 | if (!force_irqthreads) { |
316 | #ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED | ||
317 | __do_softirq(); | 317 | __do_softirq(); |
318 | else { | ||
319 | __local_bh_disable((unsigned long)__builtin_return_address(0), | ||
320 | SOFTIRQ_OFFSET); | ||
321 | wakeup_softirqd(); | ||
322 | __local_bh_enable(SOFTIRQ_OFFSET); | ||
323 | } | ||
324 | } | ||
325 | #else | 318 | #else |
326 | static inline void invoke_softirq(void) | ||
327 | { | ||
328 | if (!force_irqthreads) | ||
329 | do_softirq(); | 319 | do_softirq(); |
330 | else { | 320 | #endif |
321 | } else { | ||
331 | __local_bh_disable((unsigned long)__builtin_return_address(0), | 322 | __local_bh_disable((unsigned long)__builtin_return_address(0), |
332 | SOFTIRQ_OFFSET); | 323 | SOFTIRQ_OFFSET); |
333 | wakeup_softirqd(); | 324 | wakeup_softirqd(); |
334 | __local_bh_enable(SOFTIRQ_OFFSET); | 325 | __local_bh_enable(SOFTIRQ_OFFSET); |
335 | } | 326 | } |
336 | } | 327 | } |
337 | #endif | ||
338 | 328 | ||
339 | /* | 329 | /* |
340 | * Exit an interrupt context. Process softirqs if needed and possible: | 330 | * Exit an interrupt context. Process softirqs if needed and possible: |