[PATCH] drm/amd/amdgpu: not allow gtt size exceed system memory size

Christian König ckoenig.leichtzumerken at gmail.com
Tue Nov 14 08:58:05 UTC 2017


Am 13.11.2017 um 23:34 schrieb Felix Kuehling:
> On 2017-11-10 07:02 AM, Christian König wrote:
>> Am 10.11.2017 um 12:33 schrieb Roger He:
>>> since sometimes VRAM size is bigger than system memory
>>>
>>> Change-Id: I5b14d18ed7a9f79810cc50c023ac9e240bddf101
>>> Signed-off-by: Roger He <Hongbo.He at amd.com>
>>> ---
>>>    drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 11 ++++++++---
>>>    1 file changed, 8 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> index cdbdf67..f103ccc 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> @@ -1330,9 +1330,14 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>>        DRM_INFO("amdgpu: %uM of VRAM memory ready\n",
>>>             (unsigned) (adev->mc.real_vram_size / (1024 * 1024)));
>>>    -    if (amdgpu_gtt_size == -1)
>>> -        gtt_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
>>> -                   adev->mc.mc_vram_size);
>>> +    if (amdgpu_gtt_size == -1) {
>>> +        struct sysinfo si;
>>> +
>>> +        si_meminfo(&si);
>>> +        gtt_size = min(max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
>>> +                   adev->mc.mc_vram_size),
>>> +                   ((uint64_t)si.totalram * si.mem_unit));
>> TTM starts to try to swap things out when more than 50% of system
>> memory are used, 75% is the default hard limit where it starts to
>> block new allocations.
>>
>> So I would go with 75% here as well and code this as:
> I believe those limits can be tweaked in
> /sys/devices/virtual/drm/ttm/memory_accounting. Therefore I'd be against
> hard-coding strict limits in the driver.

Well, it's not a strict limit. You can still overwrite it with a module 
parameter.

Regards,
Christian.

>
> Regards,
>    Felix
>
>> gtt_size = AMDGPU_DEFAULT_GTT_SIZE_MB << 20;
>> gtt_size = max(gtt_size, adev->mc.mc_vram_size);
>> gtt_size = min(gtt_size, ((uint64_t)si.totalram * si.mem_unit) * 75 /
>> 100);
>>
>>
>> Regards,
>> Christian.
>>
>>> +
>>
>>> +    }
>>>        else
>>>            gtt_size = (uint64_t)amdgpu_gtt_size << 20;
>>>        r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT, gtt_size >>
>>> PAGE_SHIFT);
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx




More information about the amd-gfx mailing list