lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0jr1-dD9_cWrgunkXEsqE25CsHwpB5U0Zn_z7ztXRbSeg@mail.gmail.com>
Date: Fri, 5 Sep 2025 16:03:51 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Marco Crivellari <marco.crivellari@...e.com>
Cc: linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org, 
	Tejun Heo <tj@...nel.org>, Lai Jiangshan <jiangshanlai@...il.com>, 
	Frederic Weisbecker <frederic@...nel.org>, Sebastian Andrzej Siewior <bigeasy@...utronix.de>, 
	Michal Hocko <mhocko@...e.com>, "Rafael J . Wysocki" <rafael@...nel.org>, Pavel Machek <pavel@...nel.org>, 
	Len Brown <len.brown@...el.com>
Subject: Re: [PATCH 1/1] PM: WQ_PERCPU added to alloc_workqueue users

On Fri, Sep 5, 2025 at 11:06 AM Marco Crivellari
<marco.crivellari@...e.com> 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.
>
> alloc_workqueue() treats all queues as per-CPU by default, while unbound
> workqueues must opt-in via WQ_UNBOUND.
>
> This default is suboptimal: most workloads benefit from unbound queues,
> allowing the scheduler to place worker threads where they’re needed and
> reducing noise when CPUs are isolated.
>
> This default is suboptimal: most workloads benefit from unbound queues,
> allowing the scheduler to place worker threads where they’re needed and
> reducing noise when CPUs are isolated.

Duplicate paragraph.

> This patch adds a new WQ_PERCPU flag to explicitly request the use of

Using phrases like "this patch" in kernel patch changelogs is
discouraged because the patches become commits when they go into git
and then the language becomes slightly odd.  You can say "this change"
instead.

> the per-CPU behavior. Both flags coexist for one release cycle to allow
> callers to transition their calls.
>
> Once migration is complete, WQ_UNBOUND can be removed and unbound will
> become the implicit default.
>
> With the introduction of the WQ_PERCPU flag (equivalent to !WQ_UNBOUND),
> any alloc_workqueue() caller that doesn’t explicitly specify WQ_UNBOUND
> must now use WQ_PERCPU.
>
> All existing users have been updated accordingly.
>
> Suggested-by: Tejun Heo <tj@...nel.org>
> Signed-off-by: Marco Crivellari <marco.crivellari@...e.com>
> ---
>  kernel/power/main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/power/main.c b/kernel/power/main.c
> index 6254814d4817..eb55ef540032 100644
> --- a/kernel/power/main.c
> +++ b/kernel/power/main.c
> @@ -1012,7 +1012,7 @@ EXPORT_SYMBOL_GPL(pm_wq);
>
>  static int __init pm_start_workqueue(void)
>  {
> -       pm_wq = alloc_workqueue("pm", WQ_FREEZABLE, 0);
> +       pm_wq = alloc_workqueue("pm", WQ_FREEZABLE | WQ_PERCPU, 0);

I have no strong opinion on the change itself.

While preserving the current behavior is prudent, this particular
workqueue may as well be better off as WQ_UNBOUND.

>
>         return pm_wq ? 0 : -ENOMEM;
>  }
> --

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ