[PATCH v2] drm/amdgpu: Check BO's requested pinning domains against its preferred_domains
Leo Li
sunpeng.li at amd.com
Tue Jul 12 17:44:50 UTC 2022
On 2022-07-12 13:00, Alex Deucher wrote:
> 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>
Pushed, thanks!
- Leo
>
>> ---
>> 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