From: Petr Pavlu <petr.pavlu@suse.com>
To: Marco Crivellari <marco.crivellari@suse.com>
Cc: Tejun Heo <tj@kernel.org>, Lai Jiangshan <jiangshanlai@gmail.com>,
Frederic Weisbecker <frederic@kernel.org>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Michal Hocko <mhocko@suse.com>,
Luis Chamberlain <mcgrof@kernel.org>,
linux-kernel@vger.kernel.org, linux-modules@vger.kernel.org
Subject: Re: [PATCH 1/1] module: replace use of system_wq with system_percpu_wq
Date: Tue, 9 Sep 2025 12:37:32 +0200 [thread overview]
Message-ID: <3e007a66-419d-4933-942e-4e5cdfb06887@suse.com> (raw)
In-Reply-To: <20250905090130.101724-2-marco.crivellari@suse.com>
On 9/5/25 11:01 AM, Marco Crivellari wrote:
> 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 adding a system_percpu_wq.
>
> queue_work() / queue_delayed_work() mod_delayed_work() will now use the
> new per-cpu wq: whether the user still stick on the old name a warn will
> be printed along a wq redirect to the new one.
>
> This patch add the new system_percpu_wq except for mm, fs and net
> subsystem, whom are handled in separated patches.
>
> 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>
> ---
> kernel/module/dups.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/module/dups.c b/kernel/module/dups.c
> index bd2149fbe117..e72fa393a2ec 100644
> --- a/kernel/module/dups.c
> +++ b/kernel/module/dups.c
> @@ -113,7 +113,7 @@ static void kmod_dup_request_complete(struct work_struct *work)
> * let this linger forever as this is just a boot optimization for
> * possible abuses of vmalloc() incurred by finit_module() thrashing.
> */
> - queue_delayed_work(system_wq, &kmod_req->delete_work, 60 * HZ);
> + queue_delayed_work(system_percpu_wq, &kmod_req->delete_work, 60 * HZ);
> }
>
> bool kmod_dup_request_exists_wait(char *module_name, bool wait, int *dup_ret)
> @@ -240,7 +240,7 @@ void kmod_dup_request_announce(char *module_name, int ret)
> * There is no rush. But we also don't want to hold the
> * caller up forever or introduce any boot delays.
> */
> - queue_work(system_wq, &kmod_req->complete_work);
> + queue_work(system_percpu_wq, &kmod_req->complete_work);
>
> out:
> mutex_unlock(&kmod_dup_mutex);
The two work items queued by the dups.c code can run anywhere. I don't
see a reason why they need to be bound to a specific CPU.
If I understand the cover letter and its linked discussion correctly,
the aim is to eventually move users to unbound workqueues unless they
really need to use per-CPU workqueues.
If it helps, I believe you can already update this code to use the new
system_dfl_wq.
--
Thanks,
Petr
next prev parent reply other threads:[~2025-09-09 10:37 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-05 9:01 [PATCH 0/1] module: replace wq users and add WQ_PERCPU to alloc_workqueue() users Marco Crivellari
2025-09-05 9:01 ` [PATCH 1/1] module: replace use of system_wq with system_percpu_wq Marco Crivellari
2025-09-09 10:37 ` Petr Pavlu [this message]
2025-09-09 15:03 ` Marco Crivellari
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3e007a66-419d-4933-942e-4e5cdfb06887@suse.com \
--to=petr.pavlu@suse.com \
--cc=bigeasy@linutronix.de \
--cc=frederic@kernel.org \
--cc=jiangshanlai@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=marco.crivellari@suse.com \
--cc=mcgrof@kernel.org \
--cc=mhocko@suse.com \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.