One more step toward converting ksoftirqd to per vector workqueues.

Suggested-by: Paolo Abeni <[email protected]>
Suggested-by: Linus Torvalds <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
Cc: Dmitry Safonov <[email protected]>
Cc: Eric Dumazet <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: David Miller <[email protected]>
Cc: Hannes Frederic Sowa <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Levin Alexander <[email protected]>
Cc: Paolo Abeni <[email protected]>
Cc: Paul E. McKenney <[email protected]>
Cc: Radu Rendec <[email protected]>
Cc: Rik van Riel <[email protected]>
Cc: Stanislaw Gruszka <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Wanpeng Li <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
---
 kernel/softirq.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/kernel/softirq.c b/kernel/softirq.c
index becb1d9..bb0cffa 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -369,16 +369,14 @@ asmlinkage __visible void __softirq_entry 
__do_softirq(void)
 
        pending = local_softirq_pending() & ~softirq->pending_work_mask;
        if (pending) {
-               if (need_resched()) {
-                       wakeup_softirqd();
-               } else {
-                       /* Vectors that got re-enqueued are threaded */
-                       if (executed & pending)
-                               do_softirq_workqueue(executed & pending);
-                       pending &= ~executed;
-                       if (pending)
-                               goto restart;
-               }
+               if (need_resched())
+                       executed = pending;
+               /* Vectors that got re-enqueued are threaded */
+               if (executed & pending)
+                       do_softirq_workqueue(executed & pending);
+               pending &= ~executed;
+               if (pending)
+                       goto restart;
        }
 
        lockdep_softirq_end(in_hardirq);
-- 
2.7.4

Reply via email to