* [PATCH] drm/amd/display: Replace use of system_wq with system_percpu_wq
@ 2026-03-13 14:47 Marco Crivellari
2026-03-13 20:50 ` Claude review: " Claude Code Review Bot
2026-03-13 20:50 ` Claude Code Review Bot
0 siblings, 2 replies; 3+ messages in thread
From: Marco Crivellari @ 2026-03-13 14:47 UTC (permalink / raw)
To: linux-kernel, amd-gfx, dri-devel
Cc: Tejun Heo, Lai Jiangshan, Frederic Weisbecker,
Sebastian Andrzej Siewior, Marco Crivellari, Michal Hocko,
Harry Wentland, Leo Li, Rodrigo Siqueira, Alex Deucher,
Christian Konig, David Airlie, Simona Vetter
This patch continues the effort to refactor workqueue APIs, which has begun
with the changes introducing new workqueues and a new alloc_workqueue flag:
commit 128ea9f6ccfb ("workqueue: Add system_percpu_wq and system_dfl_wq")
commit 930c2ea566af ("workqueue: Add new WQ_PERCPU flag")
The point of the refactoring is to eventually alter the default behavior of
workqueues to become unbound by default so that their workload placement is
optimized by the scheduler.
Before that to happen, workqueue users must be converted to the better named
new workqueues with no intended behaviour changes:
system_wq -> system_percpu_wq
system_unbound_wq -> system_dfl_wq
This way the old obsolete workqueues (system_wq, system_unbound_wq) can be
removed in the future.
Link: https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Marco Crivellari <marco.crivellari@suse.com>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index b3d6f2cd8ab6..04f09eb30e41 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -568,7 +568,7 @@ static void schedule_dc_vmin_vmax(struct amdgpu_device *adev,
offload_work->stream = stream;
offload_work->adjust = adjust_copy;
- queue_work(system_wq, &offload_work->work);
+ queue_work(system_percpu_wq, &offload_work->work);
}
static void dm_vupdate_high_irq(void *interrupt_params)
@@ -4117,7 +4117,7 @@ static void handle_hpd_irq_helper(struct amdgpu_dm_connector *aconnector)
dc_sink_retain(aconnector->hdmi_prev_sink);
/* Schedule delayed detection. */
- if (mod_delayed_work(system_wq,
+ if (mod_delayed_work(system_percpu_wq,
&aconnector->hdmi_hpd_debounce_work,
msecs_to_jiffies(aconnector->hdmi_hpd_debounce_delay_ms)))
drm_dbg_kms(dev, "HDMI HPD: Re-scheduled debounce work\n");
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Claude review: drm/amd/display: Replace use of system_wq with system_percpu_wq
2026-03-13 14:47 [PATCH] drm/amd/display: Replace use of system_wq with system_percpu_wq Marco Crivellari
@ 2026-03-13 20:50 ` Claude Code Review Bot
2026-03-13 20:50 ` Claude Code Review Bot
1 sibling, 0 replies; 3+ messages in thread
From: Claude Code Review Bot @ 2026-03-13 20:50 UTC (permalink / raw)
To: dri-devel-reviews
Overall Series Review
Subject: drm/amd/display: Replace use of system_wq with system_percpu_wq
Author: Marco Crivellari <marco.crivellari@suse.com>
Patches: 1
Reviewed: 2026-03-14T06:50:05.454576
---
This is a single mechanical patch that is part of a larger kernel-wide effort to replace `system_wq` with `system_percpu_wq` in preparation for making workqueues unbound by default. The conversion is straightforward and the commit message is well-written with proper context and references.
However, there is a **semantic concern** with using `system_percpu_wq` for these particular work items.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 3+ messages in thread
* Claude review: drm/amd/display: Replace use of system_wq with system_percpu_wq
2026-03-13 14:47 [PATCH] drm/amd/display: Replace use of system_wq with system_percpu_wq Marco Crivellari
2026-03-13 20:50 ` Claude review: " Claude Code Review Bot
@ 2026-03-13 20:50 ` Claude Code Review Bot
1 sibling, 0 replies; 3+ messages in thread
From: Claude Code Review Bot @ 2026-03-13 20:50 UTC (permalink / raw)
To: dri-devel-reviews
Patch Review
**Correctness concern — per-CPU workqueue may not be appropriate here:**
Both work items modified in this patch do not have per-CPU affinity requirements:
1. **`schedule_dc_vmin_vmax`** (line 575): The work handler `dm_handle_vmin_vmax_update` immediately takes `adev->dm.dc_lock` (a mutex) and calls `dc_stream_adjust_vmin_vmax`. There is no reason this work needs to run on the CPU that queued it — it operates on device-global state protected by a mutex.
2. **`handle_hpd_irq_helper`** (line 4145): The delayed work for HDMI HPD debouncing performs connector hotplug detection. Again, there is no CPU-affinity requirement — this is device-level connector handling.
`system_percpu_wq` is a per-CPU workqueue (`WQ_PERCPU`), meaning work items will execute on the same CPU that queued them. For IRQ handler offloading (the vmin/vmax case is called from `dm_vupdate_high_irq`), pinning work to the interrupt-servicing CPU might cause unnecessary load imbalance, especially since the work immediately contends on a global mutex anyway.
**The more appropriate replacement** for these use cases would likely be `system_dfl_wq` (the replacement for `system_unbound_wq`), which allows the scheduler to place the work optimally, or simply staying with the current `system_wq` until the migration plan for non-CPU-affine users is clarified.
**Suggestion:** Confirm with the workqueue maintainers (Tejun Heo) whether `system_percpu_wq` is indeed the correct target for work items that have no per-CPU affinity requirement. The referenced refactoring thread suggests `system_wq -> system_percpu_wq` as a blanket mapping, but for work items that take global mutexes and operate on shared device state, `system_dfl_wq` may be more appropriate.
**Code changes themselves are mechanically correct** — the API signatures for `queue_work()` and `mod_delayed_work()` accept any `struct workqueue_struct *`, so the substitution compiles and functions correctly regardless of which workqueue is chosen.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-03-13 20:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-13 14:47 [PATCH] drm/amd/display: Replace use of system_wq with system_percpu_wq Marco Crivellari
2026-03-13 20:50 ` Claude review: " Claude Code Review Bot
2026-03-13 20:50 ` Claude Code Review Bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox