From bde380bde9ec3e18394b5b9c1d3040ede8939e11 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 2 Feb 2021 19:59:12 -0500 Subject: [PATCH] radv: null bo list pointer for null descriptors on update failing to unset any existing pointers here leads to stale bo entries in the list and then the kernel rejecting the cmdbuf with ENOENT Fixes: 126d5adb11e ("radv: Use host memory pool for non-freeable descriptors.") Reviewed-by: Bas Nieuwenhuizen Part-of: (cherry picked from commit 2f534c2e2ee97b89c43f155c0e2f9efe5a3dffac) --- .pick_status.json | 2 +- src/amd/vulkan/radv_descriptor_set.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 45f0153d665..a0538caa412 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2128,7 +2128,7 @@ "description": "radv: null bo list pointer for null descriptors on update", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "126d5adb11e18a329e197db8f117b47bba30eeed" }, diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index b477b874981..04d5cee7dd5 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -968,6 +968,8 @@ static void write_texel_buffer_descriptor(struct radv_device *device, if (!buffer_view) { memset(dst, 0, 4 * 4); + if (!cmd_buffer) + *buffer_list = NULL; return; } @@ -989,6 +991,8 @@ static void write_buffer_descriptor(struct radv_device *device, if (!buffer) { memset(dst, 0, 4 * 4); + if (!cmd_buffer) + *buffer_list = NULL; return; } @@ -1053,6 +1057,7 @@ static void write_dynamic_buffer_descriptor(struct radv_device *device, if (!buffer) { range->va = 0; + *buffer_list = NULL; return; } @@ -1088,6 +1093,8 @@ write_image_descriptor(struct radv_device *device, if (!iview) { memset(dst, 0, size); + if (!cmd_buffer) + *buffer_list = NULL; return; }