Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/xe: replace use of system_unbound_wq with system_dfl_wq

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>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patch.msgid.link/20260202103756.62138-2-marco.crivellari@suse.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

authored by

Marco Crivellari and committed by
Rodrigo Vivi
fa171b80 65b98860

+7 -7
+1 -1
drivers/gpu/drm/xe/xe_devcoredump.c
··· 356 356 357 357 xe_engine_snapshot_capture_for_queue(q); 358 358 359 - queue_work(system_unbound_wq, &ss->work); 359 + queue_work(system_dfl_wq, &ss->work); 360 360 361 361 dma_fence_end_signalling(cookie); 362 362 }
+1 -1
drivers/gpu/drm/xe/xe_execlist.c
··· 421 421 static void execlist_exec_queue_destroy(struct xe_exec_queue *q) 422 422 { 423 423 INIT_WORK(&q->execlist->destroy_async, execlist_exec_queue_destroy_async); 424 - queue_work(system_unbound_wq, &q->execlist->destroy_async); 424 + queue_work(system_dfl_wq, &q->execlist->destroy_async); 425 425 } 426 426 427 427 static int execlist_exec_queue_set_priority(struct xe_exec_queue *q,
+2 -2
drivers/gpu/drm/xe/xe_guc_ct.c
··· 644 644 spin_lock_irq(&ct->dead.lock); 645 645 if (ct->dead.reason) { 646 646 ct->dead.reason |= (1 << CT_DEAD_STATE_REARM); 647 - queue_work(system_unbound_wq, &ct->dead.worker); 647 + queue_work(system_dfl_wq, &ct->dead.worker); 648 648 } 649 649 spin_unlock_irq(&ct->dead.lock); 650 650 #endif ··· 2167 2167 2168 2168 spin_unlock_irqrestore(&ct->dead.lock, flags); 2169 2169 2170 - queue_work(system_unbound_wq, &(ct)->dead.worker); 2170 + queue_work(system_dfl_wq, &(ct)->dead.worker); 2171 2171 } 2172 2172 2173 2173 static void ct_dead_print(struct xe_dead_ct *dead)
+1 -1
drivers/gpu/drm/xe/xe_oa.c
··· 969 969 struct xe_oa_fence *ofence = container_of(cb, typeof(*ofence), cb); 970 970 971 971 INIT_DELAYED_WORK(&ofence->work, xe_oa_fence_work_fn); 972 - queue_delayed_work(system_unbound_wq, &ofence->work, 972 + queue_delayed_work(system_dfl_wq, &ofence->work, 973 973 usecs_to_jiffies(NOA_PROGRAM_ADDITIONAL_DELAY_US)); 974 974 dma_fence_put(fence); 975 975 }
+2 -2
drivers/gpu/drm/xe/xe_vm.c
··· 1112 1112 struct xe_vma *vma = container_of(cb, struct xe_vma, destroy_cb); 1113 1113 1114 1114 INIT_WORK(&vma->destroy_work, vma_destroy_work_func); 1115 - queue_work(system_unbound_wq, &vma->destroy_work); 1115 + queue_work(system_dfl_wq, &vma->destroy_work); 1116 1116 } 1117 1117 1118 1118 static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence) ··· 1894 1894 struct xe_vm *vm = container_of(gpuvm, struct xe_vm, gpuvm); 1895 1895 1896 1896 /* To destroy the VM we need to be able to sleep */ 1897 - queue_work(system_unbound_wq, &vm->destroy_work); 1897 + queue_work(system_dfl_wq, &vm->destroy_work); 1898 1898 } 1899 1899 1900 1900 struct xe_vm *xe_vm_lookup(struct xe_file *xef, u32 id)