Re: [PATCH] drm/amdgpu: ensure all userq VAs mapped before restore

Alex Deucher <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx
Message-ID <CADnq5_OAft6UEdb-OwmjZpQqZoCrq4ZjNKJMONOE8itqhkOk8w@mail.gmail.com>
On Thu, Aug 6, 2026 at 3:53 AM Zhu, Lingshan <[email protected]> wrote:
>
> Ping Christian and Alex
>
> I may still need the maintainer's comments to merge this patch.

You can go ahead with Sunil's RB.

Thanks!

Alex

>
> 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;
>   }
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.