Re: [PATCH] drm/amdgpu: ensure all userq VAs mapped before restore
"Zhu, Lingshan" <[email protected]> Thu, 6 Aug 2026 15:44:59 +0800
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
Ping Christian and Alex I may still need the maintainer's comments to merge this patch. Thanks Lingshan On 7/23/2026 7:17 PM, Khatri, Sunil wrote: > 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; >> } >>