[PATCH v3] drm/amdgpu: Fix VRAM BO swap issue
Arunpravin Paneer Selvam
arunpravin.paneerselvam at amd.com
Mon Sep 26 15:04:50 UTC 2022
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?
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