This makes a few changes to the way immediate mode works, and then it implements a Rust immediate mode GPUVM abstraction on top of that.
Please see the following branch for example usage in Tyr: https://gitlab.freedesktop.org/panfrost/linux/-/merge_requests/53 For context, please see this previous patch: https://lore.kernel.org/rust-for-linux/[email protected]/ and the commit message of the last patch. Signed-off-by: Alice Ryhl <[email protected]> --- Alice Ryhl (4): drm/gpuvm: take GEM lock inside drm_gpuvm_bo_obtain_prealloc() drm/gpuvm: drm_gpuvm_bo_obtain() requires lock and staged mode drm/gpuvm: use const for drm_gpuva_op_* ptrs rust: drm: add GPUVM immediate mode abstraction MAINTAINERS | 1 + drivers/gpu/drm/drm_gpuvm.c | 80 ++++-- drivers/gpu/drm/imagination/pvr_vm.c | 2 +- drivers/gpu/drm/msm/msm_gem.h | 2 +- drivers/gpu/drm/msm/msm_gem_vma.c | 2 +- drivers/gpu/drm/nouveau/nouveau_uvmm.c | 2 +- drivers/gpu/drm/panthor/panthor_mmu.c | 10 - drivers/gpu/drm/xe/xe_vm.c | 4 +- include/drm/drm_gpuvm.h | 12 +- rust/bindings/bindings_helper.h | 2 + rust/helpers/drm_gpuvm.c | 43 +++ rust/helpers/helpers.c | 1 + rust/kernel/drm/gpuvm/mod.rs | 394 +++++++++++++++++++++++++++ rust/kernel/drm/gpuvm/sm_ops.rs | 469 +++++++++++++++++++++++++++++++++ rust/kernel/drm/gpuvm/va.rs | 148 +++++++++++ rust/kernel/drm/gpuvm/vm_bo.rs | 213 +++++++++++++++ rust/kernel/drm/mod.rs | 1 + 17 files changed, 1337 insertions(+), 49 deletions(-) --- base-commit: 77b686f688126a5f758b51441a03186e9eb1b0f1 change-id: 20251128-gpuvm-rust-b719cac27ad6 Best regards, -- Alice Ryhl <[email protected]>
