diff options
Diffstat (limited to 'kernel/softirq.c')
| -rw-r--r-- | kernel/softirq.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c index b50990a5bea0..5918d227730f 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
| @@ -223,7 +223,7 @@ static inline bool lockdep_softirq_start(void) { return false; } | |||
| 223 | static inline void lockdep_softirq_end(bool in_hardirq) { } | 223 | static inline void lockdep_softirq_end(bool in_hardirq) { } |
| 224 | #endif | 224 | #endif |
| 225 | 225 | ||
| 226 | asmlinkage void __do_softirq(void) | 226 | asmlinkage __visible void __do_softirq(void) |
| 227 | { | 227 | { |
| 228 | unsigned long end = jiffies + MAX_SOFTIRQ_TIME; | 228 | unsigned long end = jiffies + MAX_SOFTIRQ_TIME; |
| 229 | unsigned long old_flags = current->flags; | 229 | unsigned long old_flags = current->flags; |
| @@ -232,7 +232,6 @@ asmlinkage void __do_softirq(void) | |||
| 232 | bool in_hardirq; | 232 | bool in_hardirq; |
| 233 | __u32 pending; | 233 | __u32 pending; |
| 234 | int softirq_bit; | 234 | int softirq_bit; |
| 235 | int cpu; | ||
| 236 | 235 | ||
| 237 | /* | 236 | /* |
| 238 | * Mask out PF_MEMALLOC s current task context is borrowed for the | 237 | * Mask out PF_MEMALLOC s current task context is borrowed for the |
| @@ -247,7 +246,6 @@ asmlinkage void __do_softirq(void) | |||
| 247 | __local_bh_disable_ip(_RET_IP_, SOFTIRQ_OFFSET); | 246 | __local_bh_disable_ip(_RET_IP_, SOFTIRQ_OFFSET); |
| 248 | in_hardirq = lockdep_softirq_start(); | 247 | in_hardirq = lockdep_softirq_start(); |
| 249 | 248 | ||
| 250 | cpu = smp_processor_id(); | ||
| 251 | restart: | 249 | restart: |
| 252 | /* Reset the pending bitmask before enabling irqs */ | 250 | /* Reset the pending bitmask before enabling irqs */ |
| 253 | set_softirq_pending(0); | 251 | set_softirq_pending(0); |
| @@ -276,11 +274,11 @@ restart: | |||
| 276 | prev_count, preempt_count()); | 274 | prev_count, preempt_count()); |
| 277 | preempt_count_set(prev_count); | 275 | preempt_count_set(prev_count); |
| 278 | } | 276 | } |
| 279 | rcu_bh_qs(cpu); | ||
| 280 | h++; | 277 | h++; |
| 281 | pending >>= softirq_bit; | 278 | pending >>= softirq_bit; |
| 282 | } | 279 | } |
| 283 | 280 | ||
| 281 | rcu_bh_qs(smp_processor_id()); | ||
| 284 | local_irq_disable(); | 282 | local_irq_disable(); |
| 285 | 283 | ||
| 286 | pending = local_softirq_pending(); | 284 | pending = local_softirq_pending(); |
| @@ -299,7 +297,7 @@ restart: | |||
| 299 | tsk_restore_flags(current, old_flags, PF_MEMALLOC); | 297 | tsk_restore_flags(current, old_flags, PF_MEMALLOC); |
| 300 | } | 298 | } |
| 301 | 299 | ||
| 302 | asmlinkage void do_softirq(void) | 300 | asmlinkage __visible void do_softirq(void) |
| 303 | { | 301 | { |
| 304 | __u32 pending; | 302 | __u32 pending; |
| 305 | unsigned long flags; | 303 | unsigned long flags; |
| @@ -779,3 +777,8 @@ int __init __weak arch_early_irq_init(void) | |||
| 779 | { | 777 | { |
| 780 | return 0; | 778 | return 0; |
| 781 | } | 779 | } |
| 780 | |||
| 781 | unsigned int __weak arch_dynirq_lower_bound(unsigned int from) | ||
| 782 | { | ||
| 783 | return from; | ||
| 784 | } | ||
