[PATCH 4/7] drm/amdgpu: initialize GDS/GWS/OA domains even when they are zero sized

Christian König ckoenig.leichtzumerken at gmail.com
Mon Sep 17 12:25:43 UTC 2018


Am 14.09.2018 um 22:14 schrieb Alex Deucher:
> On Fri, Sep 14, 2018 at 3:12 PM Christian König
> <ckoenig.leichtzumerken at gmail.com> wrote:
>> Stops crashing on SI.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
> Presumably ttm allows this?

Yes, actually explicitly tested this.

Christian.

> Acked-by: Alex Deucher <alexander.deucher at amd.com>
>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 48 +++++++++++++--------------------
>>   1 file changed, 18 insertions(+), 30 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> index 3e450159fe1f..710e7751c567 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> @@ -1843,34 +1843,25 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>                   (unsigned)(gtt_size / (1024 * 1024)));
>>
>>          /* Initialize various on-chip memory pools */
>> -       /* GDS Memory */
>> -       if (adev->gds.mem.total_size) {
>> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
>> -                                  adev->gds.mem.total_size);
>> -               if (r) {
>> -                       DRM_ERROR("Failed initializing GDS heap.\n");
>> -                       return r;
>> -               }
>> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
>> +                          adev->gds.mem.total_size);
>> +       if (r) {
>> +               DRM_ERROR("Failed initializing GDS heap.\n");
>> +               return r;
>>          }
>>
>> -       /* GWS */
>> -       if (adev->gds.gws.total_size) {
>> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
>> -                                  adev->gds.gws.total_size);
>> -               if (r) {
>> -                       DRM_ERROR("Failed initializing gws heap.\n");
>> -                       return r;
>> -               }
>> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
>> +                          adev->gds.gws.total_size);
>> +       if (r) {
>> +               DRM_ERROR("Failed initializing gws heap.\n");
>> +               return r;
>>          }
>>
>> -       /* OA */
>> -       if (adev->gds.oa.total_size) {
>> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>> -                                  adev->gds.oa.total_size);
>> -               if (r) {
>> -                       DRM_ERROR("Failed initializing oa heap.\n");
>> -                       return r;
>> -               }
>> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>> +                          adev->gds.oa.total_size);
>> +       if (r) {
>> +               DRM_ERROR("Failed initializing oa heap.\n");
>> +               return r;
>>          }
>>
>>          /* Register debugfs entries for amdgpu_ttm */
>> @@ -1907,12 +1898,9 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
>>
>>          ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_VRAM);
>>          ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_TT);
>> -       if (adev->gds.mem.total_size)
>> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
>> -       if (adev->gds.gws.total_size)
>> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
>> -       if (adev->gds.oa.total_size)
>> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
>> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
>> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
>> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
>>          ttm_bo_device_release(&adev->mman.bdev);
>>          amdgpu_ttm_global_fini(adev);
>>          adev->mman.initialized = false;
>> --
>> 2.14.1
>>
>> _______________________________________________
>> 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