Re: [PATCH RFC 0/2] HID: Replace system_wq with system_dfl_wq

Jiri Kosina <[email protected]>
Newsgroups org.kernel.vger.linux-kernel,org.kernel.vger.linux-input
Message-ID <[email protected]>
On Tue, 7 Jul 2026, Marco Crivellari wrote:

> Hi,
> 
> Currently the code uses the per-cpu workqueue system_wq to schedule
> delayed works.
> 
> Unbound works could benefit from scheduler task placement, to optimize
> performance and power consumption. Another good reason to have this unbound,
> is the "queue_delayed_work()" function, used to enqueue the work item.
> 
> ~~~ Details about queue_delayed_work ~~~
> 
> system_wq is a per-cpu workqueue and it is used as a parameter of
> mod_delayed_work(). This function schedule an item that it will later
> be enqueued (once the timer will fire). __queue_delayed_work() does the job
> receiving as "cpu" WORK_CPU_UNBOUND:
> 
>     if (housekeeping_enabled(HK_TYPE_TIMER)) {
>     //      [....]
>     } else {
>             if (likely(cpu == WORK_CPU_UNBOUND))
>                     add_timer_global(timer);
>             else
>                     add_timer_on(timer, cpu);
>     }
> 
> The timer is global, so can fire everywhere, and the work item will be
> enqueued where the timer fired.
> 
> Since the workqueue work doesn't rely on per-cpu variables, there is no
> obvious reason that justify the use of a per-cpu workqueue. So change the
> workqueue with system_dfl_wq, so that the used workqueue is now unbound
> and can benefit from scheduler task placement.

This definitely is a step in a right direction, thanks! Now applied (and 
sorry for the delay).

-- 
Jiri Kosina
SUSE Labs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.