[PATCH v2] drm/amdgpu: Check BO's requested pinning domains against its preferred_domains

Christian König ckoenig.leichtzumerken at gmail.com
Wed Jul 13 09:17:09 UTC 2022


Am 12.07.22 um 18:30 schrieb sunpeng.li at amd.com:
> From: Leo Li <sunpeng.li at amd.com>
>
> When pinning a buffer, we should check to see if there are any
> additional restrictions imposed by bo->preferred_domains. This will
> prevent the BO from being moved to an invalid domain when pinning.
>
> For example, this can happen if the user requests to create a BO in GTT
> domain for display scanout. amdgpu_dm will allow pinning to either VRAM
> or GTT domains, since DCN can scanout from either or. However, in
> amdgpu_bo_pin_restricted(), pinning to VRAM is preferred if there is
> adequate carveout. This can lead to pinning to VRAM despite the user
> requesting GTT placement for the BO.
>
> v2: Allow the kernel to override the domain, which can happen when
>      exporting a BO to a V4L camera (for example).
>
> Signed-off-by: Leo Li <sunpeng.li at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index 8a7b0f6162da..bbd3b8b14cfb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -883,6 +883,10 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
>   	if (WARN_ON_ONCE(min_offset > max_offset))
>   		return -EINVAL;
>   
> +	/* Check domain to be pinned to against preferred domains */
> +	if (bo->preferred_domains & domain)
> +		domain = bo->preferred_domains & domain;
> +
>   	/* A shared bo cannot be migrated to VRAM */
>   	if (bo->tbo.base.import_attach) {
>   		if (domain & AMDGPU_GEM_DOMAIN_GTT)



More information about the amd-gfx mailing list