OSDN Git Service

drm/amdgpu: move fw_reserve functions to amdgpu_ttm.c
authorAlex Deucher <alexander.deucher@amd.com>
Thu, 14 Dec 2017 21:39:02 +0000 (16:39 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 18 Dec 2017 15:59:35 +0000 (10:59 -0500)
It's the only place they are used.

Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

index ac21add..a8390ab 100644 (file)
@@ -1387,9 +1387,6 @@ struct amdgpu_fw_vram_usage {
        void *va;
 };
 
-int amdgpu_fw_reserve_vram_init(struct amdgpu_device *adev);
-void amdgpu_fw_reserve_vram_fini(struct amdgpu_device *adev);
-
 /*
  * CGS
  */
index 09ffa9f..3135287 100644 (file)
@@ -597,101 +597,6 @@ void amdgpu_device_gart_location(struct amdgpu_device *adev,
                        mc->gart_size >> 20, mc->gart_start, mc->gart_end);
 }
 
-/*
- * Firmware Reservation functions
- */
-/**
- * amdgpu_fw_reserve_vram_fini - free fw reserved vram
- *
- * @adev: amdgpu_device pointer
- *
- * free fw reserved vram if it has been reserved.
- */
-void amdgpu_fw_reserve_vram_fini(struct amdgpu_device *adev)
-{
-       amdgpu_bo_free_kernel(&adev->fw_vram_usage.reserved_bo,
-               NULL, &adev->fw_vram_usage.va);
-}
-
-/**
- * amdgpu_fw_reserve_vram_init - create bo vram reservation from fw
- *
- * @adev: amdgpu_device pointer
- *
- * create bo vram reservation from fw.
- */
-int amdgpu_fw_reserve_vram_init(struct amdgpu_device *adev)
-{
-       struct ttm_operation_ctx ctx = { false, false };
-       int r = 0;
-       int i;
-       u64 vram_size = adev->mc.visible_vram_size;
-       u64 offset = adev->fw_vram_usage.start_offset;
-       u64 size = adev->fw_vram_usage.size;
-       struct amdgpu_bo *bo;
-
-       adev->fw_vram_usage.va = NULL;
-       adev->fw_vram_usage.reserved_bo = NULL;
-
-       if (adev->fw_vram_usage.size > 0 &&
-               adev->fw_vram_usage.size <= vram_size) {
-
-               r = amdgpu_bo_create(adev, adev->fw_vram_usage.size,
-                       PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM,
-                       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
-                       AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS, NULL, NULL, 0,
-                       &adev->fw_vram_usage.reserved_bo);
-               if (r)
-                       goto error_create;
-
-               r = amdgpu_bo_reserve(adev->fw_vram_usage.reserved_bo, false);
-               if (r)
-                       goto error_reserve;
-
-               /* remove the original mem node and create a new one at the
-                * request position
-                */
-               bo = adev->fw_vram_usage.reserved_bo;
-               offset = ALIGN(offset, PAGE_SIZE);
-               for (i = 0; i < bo->placement.num_placement; ++i) {
-                       bo->placements[i].fpfn = offset >> PAGE_SHIFT;
-                       bo->placements[i].lpfn = (offset + size) >> PAGE_SHIFT;
-               }
-
-               ttm_bo_mem_put(&bo->tbo, &bo->tbo.mem);
-               r = ttm_bo_mem_space(&bo->tbo, &bo->placement,
-                                    &bo->tbo.mem, &ctx);
-               if (r)
-                       goto error_pin;
-
-               r = amdgpu_bo_pin_restricted(adev->fw_vram_usage.reserved_bo,
-                       AMDGPU_GEM_DOMAIN_VRAM,
-                       adev->fw_vram_usage.start_offset,
-                       (adev->fw_vram_usage.start_offset +
-                       adev->fw_vram_usage.size), NULL);
-               if (r)
-                       goto error_pin;
-               r = amdgpu_bo_kmap(adev->fw_vram_usage.reserved_bo,
-                       &adev->fw_vram_usage.va);
-               if (r)
-                       goto error_kmap;
-
-               amdgpu_bo_unreserve(adev->fw_vram_usage.reserved_bo);
-       }
-       return r;
-
-error_kmap:
-       amdgpu_bo_unpin(adev->fw_vram_usage.reserved_bo);
-error_pin:
-       amdgpu_bo_unreserve(adev->fw_vram_usage.reserved_bo);
-error_reserve:
-       amdgpu_bo_unref(&adev->fw_vram_usage.reserved_bo);
-error_create:
-       adev->fw_vram_usage.va = NULL;
-       adev->fw_vram_usage.reserved_bo = NULL;
-       return r;
-}
-
 /**
  * amdgpu_device_resize_fb_bar - try to resize FB BAR
  *
index c307a7d..5b5554c 100644 (file)
@@ -1269,6 +1269,101 @@ static struct ttm_bo_driver amdgpu_bo_driver = {
        .access_memory = &amdgpu_ttm_access_memory
 };
 
+/*
+ * Firmware Reservation functions
+ */
+/**
+ * amdgpu_ttm_fw_reserve_vram_fini - free fw reserved vram
+ *
+ * @adev: amdgpu_device pointer
+ *
+ * free fw reserved vram if it has been reserved.
+ */
+static void amdgpu_ttm_fw_reserve_vram_fini(struct amdgpu_device *adev)
+{
+       amdgpu_bo_free_kernel(&adev->fw_vram_usage.reserved_bo,
+               NULL, &adev->fw_vram_usage.va);
+}
+
+/**
+ * amdgpu_ttm_fw_reserve_vram_init - create bo vram reservation from fw
+ *
+ * @adev: amdgpu_device pointer
+ *
+ * create bo vram reservation from fw.
+ */
+static int amdgpu_ttm_fw_reserve_vram_init(struct amdgpu_device *adev)
+{
+       struct ttm_operation_ctx ctx = { false, false };
+       int r = 0;
+       int i;
+       u64 vram_size = adev->mc.visible_vram_size;
+       u64 offset = adev->fw_vram_usage.start_offset;
+       u64 size = adev->fw_vram_usage.size;
+       struct amdgpu_bo *bo;
+
+       adev->fw_vram_usage.va = NULL;
+       adev->fw_vram_usage.reserved_bo = NULL;
+
+       if (adev->fw_vram_usage.size > 0 &&
+               adev->fw_vram_usage.size <= vram_size) {
+
+               r = amdgpu_bo_create(adev, adev->fw_vram_usage.size,
+                       PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM,
+                       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
+                       AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS, NULL, NULL, 0,
+                       &adev->fw_vram_usage.reserved_bo);
+               if (r)
+                       goto error_create;
+
+               r = amdgpu_bo_reserve(adev->fw_vram_usage.reserved_bo, false);
+               if (r)
+                       goto error_reserve;
+
+               /* remove the original mem node and create a new one at the
+                * request position
+                */
+               bo = adev->fw_vram_usage.reserved_bo;
+               offset = ALIGN(offset, PAGE_SIZE);
+               for (i = 0; i < bo->placement.num_placement; ++i) {
+                       bo->placements[i].fpfn = offset >> PAGE_SHIFT;
+                       bo->placements[i].lpfn = (offset + size) >> PAGE_SHIFT;
+               }
+
+               ttm_bo_mem_put(&bo->tbo, &bo->tbo.mem);
+               r = ttm_bo_mem_space(&bo->tbo, &bo->placement,
+                                    &bo->tbo.mem, &ctx);
+               if (r)
+                       goto error_pin;
+
+               r = amdgpu_bo_pin_restricted(adev->fw_vram_usage.reserved_bo,
+                       AMDGPU_GEM_DOMAIN_VRAM,
+                       adev->fw_vram_usage.start_offset,
+                       (adev->fw_vram_usage.start_offset +
+                       adev->fw_vram_usage.size), NULL);
+               if (r)
+                       goto error_pin;
+               r = amdgpu_bo_kmap(adev->fw_vram_usage.reserved_bo,
+                       &adev->fw_vram_usage.va);
+               if (r)
+                       goto error_kmap;
+
+               amdgpu_bo_unreserve(adev->fw_vram_usage.reserved_bo);
+       }
+       return r;
+
+error_kmap:
+       amdgpu_bo_unpin(adev->fw_vram_usage.reserved_bo);
+error_pin:
+       amdgpu_bo_unreserve(adev->fw_vram_usage.reserved_bo);
+error_reserve:
+       amdgpu_bo_unref(&adev->fw_vram_usage.reserved_bo);
+error_create:
+       adev->fw_vram_usage.va = NULL;
+       adev->fw_vram_usage.reserved_bo = NULL;
+       return r;
+}
+
 int amdgpu_ttm_init(struct amdgpu_device *adev)
 {
        uint64_t gtt_size;
@@ -1311,7 +1406,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
         *The reserved vram for firmware must be pinned to the specified
         *place on the VRAM, so reserve it early.
         */
-       r = amdgpu_fw_reserve_vram_init(adev);
+       r = amdgpu_ttm_fw_reserve_vram_init(adev);
        if (r) {
                return r;
        }
@@ -1395,7 +1490,7 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
 
        amdgpu_ttm_debugfs_fini(adev);
        amdgpu_bo_free_kernel(&adev->stolen_vga_memory, NULL, NULL);
-       amdgpu_fw_reserve_vram_fini(adev);
+       amdgpu_ttm_fw_reserve_vram_fini(adev);
 
        ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_VRAM);
        ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_TT);