From 9227d63c19523b58e278a3d1b40fbde27bb53b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Mon, 11 Mar 2024 08:30:50 -0700 Subject: [PATCH] anv: Fix Xe KMD userptr unbind MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Userptr don't have a valid gem fd so it can't use DRM_XE_VM_BIND_OP_UNMAP_ALL. Current code was unbinding workaround_bo or returning error when workaround_bo size was smaller than userptr address. So here doing a regular DRM_XE_VM_BIND_OP_UNMAP, without setting xe_bind->obj and setting xe_bind->range and xe_bind->addr. Fixes: 19439624 ("anv: Use DRM_XE_VM_BIND_OP_UNMAP_ALL to unbind whole bos") Reviewed-by: Paulo Zanoni Signed-off-by: José Roberto de Souza Part-of: --- src/intel/vulkan/xe/anv_kmd_backend.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/intel/vulkan/xe/anv_kmd_backend.c b/src/intel/vulkan/xe/anv_kmd_backend.c index 5e8af53e40a..f159f4aebba 100644 --- a/src/intel/vulkan/xe/anv_kmd_backend.c +++ b/src/intel/vulkan/xe/anv_kmd_backend.c @@ -309,6 +309,11 @@ xe_vm_unbind_bo(struct anv_device *device, struct anv_bo *bo) .wait_count = 0, .signal_count = 0, }; + if (bo->from_host_ptr) { + bind.address = bo->offset; + bind.size = bo->actual_size; + bind.op = ANV_VM_UNBIND; + } return xe_vm_bind_op(device, &submit, true); }