]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
extcon: int3496: replace use of system_wq with system_percpu_wq
authorMarco Crivellari <marco.crivellari@suse.com>
Tue, 4 Nov 2025 11:01:05 +0000 (12:01 +0100)
committerChanwoo Choi <cw00.choi@samsung.com>
Fri, 20 Mar 2026 02:20:43 +0000 (11:20 +0900)
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.

This patch continues the effort to refactor worqueue APIs, which has begun
with the change introducing new workqueues and a new alloc_workqueue flag:

commit 128ea9f6ccfb ("workqueue: Add system_percpu_wq and system_dfl_wq")
commit 930c2ea566af ("workqueue: Add new WQ_PERCPU flag")

system_wq should be the per-cpu workqueue, yet in this name nothing makes
that clear, so replace system_wq with system_percpu_wq.

The old wq (system_wq) will be kept for a few release cycles.

Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Marco Crivellari <marco.crivellari@suse.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Link: https://lore.kernel.org/lkml/20251104110105.116858-1-marco.crivellari@suse.com/
drivers/extcon/extcon-intel-int3496.c

index ded1a85a55495f5a02f532bf64db63ccc1c97fdf..7d16d5b7d58f7b3a6813f1eae561415b9a2c6d1e 100644 (file)
@@ -106,7 +106,7 @@ static irqreturn_t int3496_thread_isr(int irq, void *priv)
        struct int3496_data *data = priv;
 
        /* Let the pin settle before processing it */
-       mod_delayed_work(system_wq, &data->work, DEBOUNCE_TIME);
+       mod_delayed_work(system_percpu_wq, &data->work, DEBOUNCE_TIME);
 
        return IRQ_HANDLED;
 }
@@ -181,7 +181,7 @@ static int int3496_probe(struct platform_device *pdev)
        }
 
        /* process id-pin so that we start with the right status */
-       queue_delayed_work(system_wq, &data->work, 0);
+       queue_delayed_work(system_percpu_wq, &data->work, 0);
        flush_delayed_work(&data->work);
 
        platform_set_drvdata(pdev, data);