Skip to content
Snippets Groups Projects
user avatar
Tejun Heo authored
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")
2f34d733
History
Name Last commit Last update