Skip to content
Snippets Groups Projects
Commit 2f34d733 authored by Tejun Heo's avatar Tejun Heo
Browse files

workqueue: Fix queue_work_on() with BH workqueues


When queue_work_on() is used to queue a BH work item on a remote CPU, the
work item is queued on that CPU but kick_pool() raises softirq on the local
CPU. This leads to stalls as the work item won't be executed until something
else on the remote CPU schedules a BH work item or tasklet locally.

Fix it by bouncing raising softirq to the target CPU using per-cpu irq_work.

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Fixes: 4cb1ef64 ("workqueue: Implement BH workqueues to eventually replace tasklets")
parent bf52b1ac
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment