[PATCH v3] drm/amdgpu: Fix VRAM BO swap issue
Christian König
christian.koenig at amd.com
Mon Sep 26 15:06:46 UTC 2022
Am 26.09.22 um 17:04 schrieb Arunpravin Paneer Selvam:
>
>
> On 9/26/2022 12:01 PM, Christian König wrote:
>> Am 26.09.22 um 07:25 schrieb Arunpravin Paneer Selvam:
>>> DRM buddy manager allocates the contiguous memory requests in
>>> a single block or multiple blocks. So for the ttm move operation
>>> (incase of low vram memory) we should consider all the blocks to
>>> compute the total memory size which compared with the struct
>>> ttm_resource num_pages in order to verify that the blocks are
>>> contiguous for the eviction process.
>>>
>>> v2: Added a Fixes tag
>>> v3: Rewrite the code to save a bit of calculations and
>>> variables (Christian)
>>>
>>> Fixes: c9cad937c0c5 ("drm/amdgpu: add drm buddy support to amdgpu")
>>> Signed-off-by: Arunpravin Paneer Selvam
>>> <Arunpravin.PaneerSelvam at amd.com>
>>
>> Reviewed-by: Christian König <christian.koenig at amd.com>
>
> Shall I push this patch into amd-staging-drm-next?
If it applies cleanly then I think so, yes.
Another possibility would be through drm-misc-fixes, but since it is a
pure amdgpu fix we should try to avoid that.
Christian.
>
> Thanks,
> Arun.
>>
>>> ---
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 17 ++++++++++++-----
>>> 1 file changed, 12 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> index b1c455329023..dc262d2c2925 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> @@ -424,8 +424,9 @@ static int amdgpu_move_blit(struct
>>> ttm_buffer_object *bo,
>>> static bool amdgpu_mem_visible(struct amdgpu_device *adev,
>>> struct ttm_resource *mem)
>>> {
>>> - uint64_t mem_size = (u64)mem->num_pages << PAGE_SHIFT;
>>> + u64 mem_size = (u64)mem->num_pages << PAGE_SHIFT;
>>> struct amdgpu_res_cursor cursor;
>>> + u64 end;
>>> if (mem->mem_type == TTM_PL_SYSTEM ||
>>> mem->mem_type == TTM_PL_TT)
>>> @@ -434,12 +435,18 @@ static bool amdgpu_mem_visible(struct
>>> amdgpu_device *adev,
>>> return false;
>>> amdgpu_res_first(mem, 0, mem_size, &cursor);
>>> + end = cursor.start + cursor.size;
>>> + while (cursor.remaining) {
>>> + amdgpu_res_next(&cursor, cursor.size);
>>> - /* ttm_resource_ioremap only supports contiguous memory */
>>> - if (cursor.size != mem_size)
>>> - return false;
>>> + /* ttm_resource_ioremap only supports contiguous memory */
>>> + if (end != cursor.start)
>>> + return false;
>>> +
>>> + end = cursor.start + cursor.size;
>>> + }
>>> - return cursor.start + cursor.size <=
>>> adev->gmc.visible_vram_size;
>>> + return end <= adev->gmc.visible_vram_size;
>>> }
>>> /*
>>
>
More information about the amd-gfx
mailing list