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

Alex Deucher alexdeucher at gmail.com
Tue Jul 12 17:00:49 UTC 2022


On Tue, Jul 12, 2022 at 12:28 PM <sunpeng.li at amd.com> wrote:
>
> 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: Alex Deucher <alexander.deucher 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)
> --
> 2.37.0
>


More information about the amd-gfx mailing list