]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/diag324: Replace use of system_wq with system_percpu_wq
authorMarco Crivellari <marco.crivellari@suse.com>
Wed, 17 Sep 2025 15:38:58 +0000 (17:38 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Thu, 25 Sep 2025 12:28:58 +0000 (14:28 +0200)
Currently if a user enqueue a work item using schedule_delayed_work() the
used wq is "system_wq" (per-cpu wq) while queue_delayed_work() use
WORK_CPU_UNBOUND (used when a cpu is not specified). The same applies to
schedule_work() that is using system_wq and queue_work(), that makes use
again of WORK_CPU_UNBOUND.

This lack of consistentcy cannot be addressed without refactoring the API.

system_wq is a per-CPU worqueue, yet nothing in its name tells about that
CPU affinity constraint, which is very often not required by users. Make
it clear by renaming system_wq to system_percpu_wq.

queue_work() / queue_delayed_work() mod_delayed_work() will now use the
new per-cpu wq.

The old wq will be kept for a few release cylces.

Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Marco Crivellari <marco.crivellari@suse.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/kernel/diag/diag324.c

index 7fa4c0b7eb6c71270bcaf13f90e3273e99a8c179..f0a8b4841fb9640d362bdf0eb78cb07b2f402ec3 100644 (file)
@@ -116,7 +116,7 @@ static void pibwork_handler(struct work_struct *work)
        mutex_lock(&pibmutex);
        timedout = ktime_add_ns(data->expire, PIBWORK_DELAY);
        if (ktime_before(ktime_get(), timedout)) {
-               mod_delayed_work(system_wq, &pibwork, nsecs_to_jiffies(PIBWORK_DELAY));
+               mod_delayed_work(system_percpu_wq, &pibwork, nsecs_to_jiffies(PIBWORK_DELAY));
                goto out;
        }
        vfree(data->pib);
@@ -174,7 +174,7 @@ long diag324_pibbuf(unsigned long arg)
                pib_update(data);
                data->sequence++;
                data->expire = ktime_add_ns(ktime_get(), tod_to_ns(data->pib->intv));
-               mod_delayed_work(system_wq, &pibwork, nsecs_to_jiffies(PIBWORK_DELAY));
+               mod_delayed_work(system_percpu_wq, &pibwork, nsecs_to_jiffies(PIBWORK_DELAY));
                first = false;
        }
        rc = data->rc;