Reviewed-by: Sunil Khatri <[email protected]>

On 23-07-2026 01:53 pm, Zhu Lingshan wrote:
amdgpu_userq_buffer_vas_mapped() checks whether all VAs
of a queue are mapped before restoring it.
So that HW won't access any invalid addresses.

Currently, this function assumes all VAs are mapped if
any VA of a queue has been mapped, which is wrong.

This commit fixes this problem by examining all VAs of
a queue and reporting false if any of them is not mapped.

Signed-off-by: Zhu Lingshan <[email protected]>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 16 +++++++++-------
  1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
index 3fe10d6af757..2b3cb4ec4835 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
@@ -280,22 +280,24 @@ static bool amdgpu_userq_buffer_va_mapped(struct 
amdgpu_vm *vm, u64 addr)
static bool amdgpu_userq_buffer_vas_mapped(struct amdgpu_usermode_queue *queue)
  {
-       int i, r = 0;
+       int i;
+       bool mapped;
for (i = 0; i < ARRAY_SIZE(queue->userq_vas.va_array); i++) {
                if (!queue->userq_vas.va_array[i])
                        continue;
-               r += amdgpu_userq_buffer_va_mapped(queue->vm,
+
+               mapped = amdgpu_userq_buffer_va_mapped(queue->vm,
                                                   
queue->userq_vas.va_array[i]);
                dev_dbg(queue->userq_mgr->adev->dev,
                        "validate the userq mapping:%p va:%llx r:%d\n",
-                       queue, queue->userq_vas.va_array[i], r);
-       }
+                       queue, queue->userq_vas.va_array[i], mapped);
- if (r != 0)
-               return true;
+               if (!mapped)
+                       return false;
+       }
- return false;
+       return true;
  }

Reply via email to