[PATCH v5 0/2] Add new workqueue wrapper and enqueue on cpu functions

From: Marco Crivellari

Date: Wed Feb 04 2026 - 11:23:20 EST


Hi,

Recently the workqueue code has been changed introducing two new workqueue,
system_percpu_wq and system_dfl_wq, as a future replacement for system_wq and
system_unbound_wq respectively.

The change has been introduced by:
'commit 128ea9f6ccfb ("workqueue: Add system_percpu_wq and system_dfl_wq")'

The old workqueue(s) will be removed in a next release cycle.

=== Introduced Changes by this series ===

1) [P 1] Add wrapper for the new system_dfl_wq
- This change introduce two new Rust functions in order to add a wrapper for
the new wq(s) defined in the C code.

2) [P 2] Add wrapper for system_percpu_wq and two new functions
- The new functions added are enqueue_cpu() and enqueue_delayed_cpu() and
are accepting a u32 parameter, the id of the CPU on which the work should
be scheduled on.


Thanks!

---
Changes in v5:
- system_dfl() renamed to system_default()

- Cover letter v4:
https://lore.kernel.org/all/20260203152818.317806-1-marco.crivellari@xxxxxxxx/

Changes in v4:
- two new function added in the Queue implementation:
* enqueue_cpu()
* enqueue_delayed_cpu()

These functions receive a u32 CPU id in order to schedule work on that CPU.

More info can be found in the v3 discussion:
https://lore.kernel.org/all/CAAofZF6jcCAdDjRp-7w7+_ZgOG4k3apxbSiKvGoUDVf5hw0GhA@xxxxxxxxxxxxxx/

Changes in v3:
- added a proper comment documenting the new added functions.

Changes in v2:
- added system_percpu() and system_dfl() in order to use the new
wq defined in the C code.

- fixed misleading paragraph in the commit log (no warnings are currently
present).

Marco Crivellari (2):
rust: add system_default() around the new system_dfl_wq
rust: add system_percpu() and per-cpu enqueue functions

rust/kernel/sync/completion.rs | 2 +-
rust/kernel/workqueue.rs | 110 +++++++++++++++++++++++++++++++--
2 files changed, 105 insertions(+), 7 deletions(-)

--
2.52.0