aboutsummaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorGravatar Tejun Heo <tj@kernel.org> 2024-02-14 08:33:55 -1000
committerGravatar Tejun Heo <tj@kernel.org> 2024-02-14 08:33:55 -1000
commit2f34d7337d98f3eae7bd3d1270efaf9d8a17cfc6 (patch)
treeba618a794f4b55650672325b5c76d2d8e1cb0f05 /init
parentasync: Use a dedicated unbound workqueue with raised min_active (diff)
downloadlinux-2f34d7337d98f3eae7bd3d1270efaf9d8a17cfc6.tar.gz
linux-2f34d7337d98f3eae7bd3d1270efaf9d8a17cfc6.tar.bz2
linux-2f34d7337d98f3eae7bd3d1270efaf9d8a17cfc6.zip
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: Tejun Heo <tj@kernel.org> Fixes: 4cb1ef64609f ("workqueue: Implement BH workqueues to eventually replace tasklets")
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions