[PATCH v2 0/2] workqueue: Make WQ_UNBOUND the default behavior

From: Marco Crivellari

Date: Thu Sep 03 2026 - 12:55:01 EST


Hi,

Currently alloc_workqueue() make sure one among WQ_UNBOUND or WQ_PERCPU is
present. This is enforced warning and setting WQ_PERCPU as default when
alloc_workqueue() without WQ_PERCPU or WQ_UNBOUND.

[ P1 ] change this behavior: if no flags are specified, WQ_UNBOUND is
set by default, changing the default behavior when flags are not present.

The WARN_ONCE() when neither flags are present has been removed and it has
been replaced by pr_warn_once(): from now on, every alloc_users()
without WQ_PERCPU will be considered unbound.

Q: I decided to pr_warn_once() just to make sure users are aware of the new
behavior. It makes sense or we can just drop it directly?
I don't think the WARN_ONCE() is appropriate now, for this specific path.

[ P2 ] updates the documentation accordingly.

Thanks!

---
Changes in v1:
- if/else to add/drop WQ_UNBOUND/WQ_PERCPU moved before wq_size assignment

Link to v1: https://lore.kernel.org/all/20260903152204.401638-1-marco.crivellari@xxxxxxxx/

Marco Crivellari (2):
workqueue: Make alloc_workqueue() unbound by default
doc: Update WQ_UNBOUND documentation

Documentation/core-api/workqueue.rst | 2 ++
kernel/workqueue.c | 43 +++++++++++++++++-----------
2 files changed, 29 insertions(+), 16 deletions(-)

--
2.55.0