diff options
author | 2021-01-25 11:08:34 +0900 | |
---|---|---|
committer | 2021-01-25 11:16:06 +0900 | |
commit | 2261352157a932717ec08b9dd18d1bfbb7c37c52 (patch) | |
tree | b48a3ea4060a7d078aecb97de07597a8eb24467a /kernel/workqueue.c | |
parent | drivers/soc/litex: Add restart handler (diff) | |
parent | openrisc: io: Add missing __iomem annotation to iounmap() (diff) | |
download | wireguard-linux-2261352157a932717ec08b9dd18d1bfbb7c37c52.tar.xz wireguard-linux-2261352157a932717ec08b9dd18d1bfbb7c37c52.zip |
Merge remote-tracking branch 'openrisc/or1k-5.11-fixes' into or1k-5.12-updates
Pickup fixes that went upstream already in order to resolve conflicts in
litex_soc_ctrl.c between 5.11 fixes that went upstream and the
or1k-5.12-updates linux-next queue.
Signed-off-by: Stafford Horne <shorne@gmail.com>
Diffstat (limited to 'kernel/workqueue.c')
-rw-r--r-- | kernel/workqueue.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index b5295a0b0536..9880b6c0e272 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3731,17 +3731,24 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq) * is updated and visible. */ if (!freezable || !workqueue_freezing) { + bool kick = false; + pwq->max_active = wq->saved_max_active; while (!list_empty(&pwq->delayed_works) && - pwq->nr_active < pwq->max_active) + pwq->nr_active < pwq->max_active) { pwq_activate_first_delayed(pwq); + kick = true; + } /* * Need to kick a worker after thawed or an unbound wq's - * max_active is bumped. It's a slow path. Do it always. + * max_active is bumped. In realtime scenarios, always kicking a + * worker will cause interference on the isolated cpu cores, so + * let's kick iff work items were activated. */ - wake_up_worker(pwq->pool); + if (kick) + wake_up_worker(pwq->pool); } else { pwq->max_active = 0; } |