Module: Mesa
Branch: main
Commit: 42dd48e93368a6a7e2764bf57295b31404c0c25a
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=42dd48e93368a6a7e2764bf57295b31404c0c25a

Author: José Roberto de Souza <jose.so...@intel.com>
Date:   Thu Nov 30 09:11:20 2023 -0800

anv: Fix vm bind of DRM_XE_VM_BIND_FLAG_NULL

In this case bo is NULL so application was crashing when it was trying
to get the alloc_flags of bo to get the intel_device_info_pat_entry.

Fixes: 1a0d3504d534 ("anv: Fill PAT fields in Xe KMD gem_create and vm_bind 
uAPIs")
Signed-off-by: José Roberto de Souza <jose.so...@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zan...@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26430>

---

 src/intel/vulkan/xe/anv_kmd_backend.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/intel/vulkan/xe/anv_kmd_backend.c 
b/src/intel/vulkan/xe/anv_kmd_backend.c
index c986e726bcd..529e9616a2b 100644
--- a/src/intel/vulkan/xe/anv_kmd_backend.c
+++ b/src/intel/vulkan/xe/anv_kmd_backend.c
@@ -151,10 +151,12 @@ xe_vm_bind_op(struct anv_device *device,
          .op = DRM_XE_VM_BIND_OP_UNMAP,
          .flags = 0,
          .prefetch_mem_region_instance = 0,
-         .pat_index = anv_device_get_pat_entry(device, bo->alloc_flags)->index,
       };
 
       if (bind->op == ANV_VM_BIND) {
+         const enum anv_bo_alloc_flags alloc_flags = bo ? bo->alloc_flags : 0;
+
+         xe_bind->pat_index = anv_device_get_pat_entry(device, 
alloc_flags)->index;
          if (!bo) {
             xe_bind->op = DRM_XE_VM_BIND_OP_MAP;
             xe_bind->flags |= DRM_XE_VM_BIND_FLAG_NULL;

Reply via email to