]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu/ttm: Initialize AMDGPU_PL_MMIO_REMAP Heap
authorSrinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Wed, 20 Aug 2025 11:09:38 +0000 (16:39 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 15 Sep 2025 20:52:07 +0000 (16:52 -0400)
Add a one-page TTM range manager for AMDGPU_PL_MMIO_REMAP via
amdgpu_ttm_init_on_chip(). This only registers the placement with TTM;
no BO is allocated in this patch.

The singleton 4K remap BO is created and freed in the following patch.

This split follows to separate heap bring-up from BO allocation.

Cc: Christian König <christian.koenig@amd.com>
Suggested-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

index 42f97d568059271bd162908d584502cdd375825f..1a68ba17a62dd04c0d2ba043ce1aa4db78a7051b 100644 (file)
@@ -2021,6 +2021,13 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
                return r;
        }
 
+       /* Initialize MMIO-remap pool (single page 4K) */
+       r = amdgpu_ttm_init_on_chip(adev, AMDGPU_PL_MMIO_REMAP, 1);
+       if (r) {
+               dev_err(adev->dev, "Failed initializing MMIO-remap heap.\n");
+               return r;
+       }
+
        /* Initialize preemptible memory pool */
        r = amdgpu_preempt_mgr_init(adev);
        if (r) {
@@ -2083,6 +2090,7 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
        }
        amdgpu_bo_free_kernel(&adev->mman.sdma_access_bo, NULL,
                                        &adev->mman.sdma_access_ptr);
+
        amdgpu_ttm_fw_reserve_vram_fini(adev);
        amdgpu_ttm_drv_reserve_vram_fini(adev);
 
@@ -2104,6 +2112,7 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
        ttm_range_man_fini(&adev->mman.bdev, AMDGPU_PL_GWS);
        ttm_range_man_fini(&adev->mman.bdev, AMDGPU_PL_OA);
        ttm_range_man_fini(&adev->mman.bdev, AMDGPU_PL_DOORBELL);
+       ttm_range_man_fini(&adev->mman.bdev, AMDGPU_PL_MMIO_REMAP);
        ttm_device_fini(&adev->mman.bdev);
        adev->mman.initialized = false;
        dev_info(adev->dev, "amdgpu: ttm finalized\n");