[PATCH 0/8] rust: Add drm::JobQueue

From: Philipp Stanner

Date: Fri Nov 06 2026 - 09:11:52 EST


Changes since RFCv7:
- Write a bunch of documentation, mostly about the kill() backend_ops.
- Add creations of own work_queues (requires some work with the life
times still; last relevant TODO AFAICS).

Depends on the workqueue series:
https://lore.kernel.org/rust-for-linux/20261020-rust-workqueue-v3-0-ea7c74d02068@xxxxxxxxxx/

Besides based on drm-rust-next

Daniel tested an earlier RFC (v6 I think) on Tyr and reports that it ran
well. In v2 I want to have our own workqueues ready, perhaps after the
workqueue has gone upstream.

But I thought it's time to present this as v1 since we settled on the
design, it's mostly working already and we can now begin diving out the
remaining problems.

So please review :)

Thx again to everyone who helped with moving this forward.

Last RFC:
https://lore.kernel.org/dri-devel/20261103153138.1087330-2-phasta@xxxxxxxxxx/

Repo:
https://gitlab.freedesktop.org/pstanner/linux-drm-work/-/tree/jobqueue-jobqueue-v1-2?ref_type=heads


PS:
Note that this version now obtains a fence->error under lock,
because I strongly suspect that this pattern

if (dma_fence_is_signaled(f))
pr_info("err: %i\n", f->error);

is UB since there is no memory ordering between the reads (which would
proof that fences' locks are not "just for the cb_list", as was sometimes
suggested). My discussions regarding fixing that in C can be found here:

https://lore.kernel.org/dri-devel/20261020100034.759183-2-phasta@xxxxxxxxxx/
https://lore.kernel.org/dri-devel/2db0f1b4-6628-465e-928e-d779b89f59dc@xxxxxxx/


Philipp Stanner (8):
rust: DmaFence: Implement Deref for FenceContext
rust: DmaFence: Add ID accessor for FenceContext
rust: DmaFence: Don't drop on signal
rust: DmaFence: Replace call_rcu() with synchronize_rcu()
rust: DmaFence: Replace is_signaled() with status()
rust: DmaFence: Pass result in callbacks
rust: drm: Add JobQueue
MAINTAINERS: Add drm::JobQueue to drm_sched's entry

MAINTAINERS | 1 +
rust/helpers/dma_fence.c | 4 +-
rust/kernel/dma_buf/dma_fence.rs | 234 ++++-----
rust/kernel/dma_buf/mod.rs | 3 +-
rust/kernel/drm/job_queue.rs | 873 +++++++++++++++++++++++++++++++
rust/kernel/drm/mod.rs | 4 +
6 files changed, 996 insertions(+), 123 deletions(-)
create mode 100644 rust/kernel/drm/job_queue.rs


base-commit: 7a6bc132f1b51437063c9203e7221067b40a791e
prerequisite-patch-id: f5e24f7b3717f2ab0445b5395c7f12b554861d78
prerequisite-patch-id: e4ebcb108207c2d06130382c59c12ffe09a7a6db
prerequisite-patch-id: 8dc24064e858240a6bb5411a261a987a7eae3fad
prerequisite-patch-id: eefbd4a72ed6da0083e20811882738cc3b05604f
prerequisite-patch-id: ea89aac6f42582c91174068c1db4d171bd7a8920
--
2.56.0