[PATCH] softirq: Kick ksoftirqd if __do_softirq() is incomplete

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When invoking the softirq, a tasklet may be skipped due to contention or
being disabled. The tasklet is then left on the scheduled list, but we
do not wakeup ksoftirqd to retry the execution.

Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
 kernel/softirq.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/softirq.c b/kernel/softirq.c
index a47c6dd57452..88cec274037d 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -379,9 +379,10 @@ static inline void invoke_softirq(void)
 		 */
 		do_softirq_own_stack();
 #endif
-	} else {
-		wakeup_softirqd();
 	}
+
+	if (local_softirq_pending())
+		wakeup_softirqd();
 }
 
 static inline void tick_irq_exit(void)
-- 
2.27.0.rc0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux