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

Alex Deucher alexdeucher at gmail.com
Fri Sep 14 20:14:45 UTC 2018


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?
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