]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: cdev: replace use of system_wq with system_percpu_wq
authorMarco Crivellari <marco.crivellari@suse.com>
Fri, 31 Oct 2025 11:16:28 +0000 (12:16 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 5 Nov 2025 11:14:06 +0000 (12:14 +0100)
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 consistency cannot be addressed without refactoring the API.

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>
Link: https://lore.kernel.org/r/20251031111628.143924-2-marco.crivellari@suse.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib-cdev.c

index ed064e6f268c78c123bb655ddf1bf6592531574b..c437f14132b8637d3322fa7e5c2f86ad9a2506b3 100644 (file)
@@ -700,7 +700,7 @@ static enum hte_return process_hw_ts(struct hte_ts_data *ts, void *p)
        if (READ_ONCE(line->sw_debounced)) {
                line->total_discard_seq++;
                line->last_seqno = ts->seq;
-               mod_delayed_work(system_wq, &line->work,
+               mod_delayed_work(system_percpu_wq, &line->work,
                  usecs_to_jiffies(READ_ONCE(line->desc->debounce_period_us)));
        } else {
                if (unlikely(ts->seq < line->line_seqno))
@@ -841,7 +841,7 @@ static irqreturn_t debounce_irq_handler(int irq, void *p)
 {
        struct line *line = p;
 
-       mod_delayed_work(system_wq, &line->work,
+       mod_delayed_work(system_percpu_wq, &line->work,
                usecs_to_jiffies(READ_ONCE(line->desc->debounce_period_us)));
 
        return IRQ_HANDLED;