[PATCH] Revert "drm/amdgpu: remove TOPDOWN flags when allocating VRAM in large bar system"

Arunpravin Paneer Selvam arunpravin.paneerselvam at amd.com
Tue May 23 18:56:02 UTC 2023


Hi Felix,

On 5/21/2023 12:09 AM, Felix Kuehling wrote:
> Am 2023-05-20 um 05:25 schrieb Arunpravin Paneer Selvam:
>> This reverts commit c105518679b6e87232874ffc989ec403bee59664.
>>
>> This patch disables the TOPDOWN flag for APU and few dGPU cards
>> which has the VRAM size equal to the BAR size.
>
> With resizable BARs it's not that rare.
>
>
>>
>> When we enable the TOPDOWN flag, we get the free blocks at
>> the highest available memory region and we don't split the
>> lower order blocks. This change is required to keep off
>> the fragmentation related issues particularly in ASIC
>> which has VRAM space <= 500MiB
>
> If TOPDOWN has these general benefits, then would it make sense to 
> allocate visible memory TOPDOWN as well, on large-BAR GPUs? Without 
> knowing too much about the internals of the allocator, my intuition 
> tells me that using only one allocation strategy has a better chance 
> of minimizing fragmentation than mixing two allocation strategies for 
> no good reason.
We have 2 allocation strategies for visible memory and non-visible 
memory. For visible memory we are going with tree based search as we 
should limit our allocation within a specified range limit. The TOPDOWN 
flag is not applicable for tree based
search allocation. For non-visible memory we pick free blocks from the 
free list and here the TOPDOWN flag is applicable.

For large-BAR GPUs visible memory, we don't go with tree based search 
since the BAR == VRAM size, and if this 
AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED flag is set for every allocation 
on large-BAR GPUs, we don't set TOPDOWN flag and
this could create fragmentation issue in case of heavy load. I will 
check the behavior on large BAR GPUs and set the TOPDOWN flag if not set.

Thanks,
Arun.
>
>
> Regards,
>   Felix
>
>
>>
>> Hence, we are reverting this patch.
>>
>> Gitlab issue link - https://gitlab.freedesktop.org/drm/amd/-/issues/2270
>>
>> Signed-off-by: Arunpravin Paneer Selvam 
>> <Arunpravin.PaneerSelvam at amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> index 2bd1a54ee866..ca5fc07faf6c 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> @@ -139,7 +139,7 @@ void amdgpu_bo_placement_from_domain(struct 
>> amdgpu_bo *abo, u32 domain)
>>             if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED)
>>               places[c].lpfn = visible_pfn;
>> -        else if (adev->gmc.real_vram_size != 
>> adev->gmc.visible_vram_size)
>> +        else
>>               places[c].flags |= TTM_PL_FLAG_TOPDOWN;
>>             if (flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS)



More information about the amd-gfx mailing list