Merge drm/drm-next into drm-misc-next
[linux-block.git] / drivers / gpu / drm / radeon / radeon_ttm.c
index 18e6dca9b77eb24fb65da7d49857f302d884ed9a..31a06ecf450f1aaca6d8557e820290f8c2342a96 100644 (file)
@@ -68,35 +68,17 @@ struct radeon_device *radeon_get_rdev(struct ttm_bo_device *bdev)
 
 static int radeon_ttm_init_vram(struct radeon_device *rdev)
 {
-       struct ttm_mem_type_manager *man = &rdev->mman.bdev.man[TTM_PL_VRAM];
-
-       man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;
-       man->default_caching = TTM_PL_FLAG_WC;
-
-       return ttm_range_man_init(&rdev->mman.bdev, man,
+       return ttm_range_man_init(&rdev->mman.bdev, TTM_PL_VRAM,
+                                 TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC,
+                                 TTM_PL_FLAG_WC, false,
                                  rdev->mc.real_vram_size >> PAGE_SHIFT);
 }
 
 static int radeon_ttm_init_gtt(struct radeon_device *rdev)
 {
-       struct ttm_mem_type_manager *man = &rdev->mman.bdev.man[TTM_PL_TT];
-
-       man->available_caching = TTM_PL_MASK_CACHING;
-       man->default_caching = TTM_PL_FLAG_CACHED;
-       man->use_tt = true;
-#if IS_ENABLED(CONFIG_AGP)
-       if (rdev->flags & RADEON_IS_AGP) {
-               if (!rdev->ddev->agp) {
-                       DRM_ERROR("AGP is not enabled\n");
-                       return -EINVAL;
-               }
-               man->available_caching = TTM_PL_FLAG_UNCACHED |
-                                        TTM_PL_FLAG_WC;
-               man->default_caching = TTM_PL_FLAG_WC;
-       }
-#endif
-
-       return ttm_range_man_init(&rdev->mman.bdev, man,
+       return ttm_range_man_init(&rdev->mman.bdev, TTM_PL_TT,
+                                 TTM_PL_MASK_CACHING,
+                                 TTM_PL_FLAG_CACHED, true,
                                  rdev->mc.gtt_size >> PAGE_SHIFT);
 }
 
@@ -167,9 +149,9 @@ static int radeon_verify_access(struct ttm_buffer_object *bo, struct file *filp)
 }
 
 static void radeon_move_null(struct ttm_buffer_object *bo,
-                            struct ttm_mem_reg *new_mem)
+                            struct ttm_resource *new_mem)
 {
-       struct ttm_mem_reg *old_mem = &bo->mem;
+       struct ttm_resource *old_mem = &bo->mem;
 
        BUG_ON(old_mem->mm_node != NULL);
        *old_mem = *new_mem;
@@ -178,8 +160,8 @@ static void radeon_move_null(struct ttm_buffer_object *bo,
 
 static int radeon_move_blit(struct ttm_buffer_object *bo,
                        bool evict, bool no_wait_gpu,
-                       struct ttm_mem_reg *new_mem,
-                       struct ttm_mem_reg *old_mem)
+                       struct ttm_resource *new_mem,
+                       struct ttm_resource *old_mem)
 {
        struct radeon_device *rdev;
        uint64_t old_start, new_start;
@@ -234,11 +216,11 @@ static int radeon_move_blit(struct ttm_buffer_object *bo,
 static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
                                bool evict, bool interruptible,
                                bool no_wait_gpu,
-                               struct ttm_mem_reg *new_mem)
+                               struct ttm_resource *new_mem)
 {
        struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
-       struct ttm_mem_reg *old_mem = &bo->mem;
-       struct ttm_mem_reg tmp_mem;
+       struct ttm_resource *old_mem = &bo->mem;
+       struct ttm_resource tmp_mem;
        struct ttm_place placements;
        struct ttm_placement placement;
        int r;
@@ -272,18 +254,18 @@ static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
        }
        r = ttm_bo_move_ttm(bo, &ctx, new_mem);
 out_cleanup:
-       ttm_bo_mem_put(bo, &tmp_mem);
+       ttm_resource_free(bo, &tmp_mem);
        return r;
 }
 
 static int radeon_move_ram_vram(struct ttm_buffer_object *bo,
                                bool evict, bool interruptible,
                                bool no_wait_gpu,
-                               struct ttm_mem_reg *new_mem)
+                               struct ttm_resource *new_mem)
 {
        struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
-       struct ttm_mem_reg *old_mem = &bo->mem;
-       struct ttm_mem_reg tmp_mem;
+       struct ttm_resource *old_mem = &bo->mem;
+       struct ttm_resource tmp_mem;
        struct ttm_placement placement;
        struct ttm_place placements;
        int r;
@@ -310,17 +292,17 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo,
                goto out_cleanup;
        }
 out_cleanup:
-       ttm_bo_mem_put(bo, &tmp_mem);
+       ttm_resource_free(bo, &tmp_mem);
        return r;
 }
 
 static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
                          struct ttm_operation_ctx *ctx,
-                         struct ttm_mem_reg *new_mem)
+                         struct ttm_resource *new_mem)
 {
        struct radeon_device *rdev;
        struct radeon_bo *rbo;
-       struct ttm_mem_reg *old_mem = &bo->mem;
+       struct ttm_resource *old_mem = &bo->mem;
        int r;
 
        r = ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu);
@@ -377,7 +359,7 @@ memcpy:
        return 0;
 }
 
-static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem)
+static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_resource *mem)
 {
        struct radeon_device *rdev = radeon_get_rdev(bdev);
 
@@ -545,7 +527,7 @@ static void radeon_ttm_tt_unpin_userptr(struct ttm_tt *ttm)
 }
 
 static int radeon_ttm_backend_bind(struct ttm_tt *ttm,
-                                  struct ttm_mem_reg *bo_mem)
+                                  struct ttm_resource *bo_mem)
 {
        struct radeon_ttm_tt *gtt = (void*)ttm;
        uint32_t flags = RADEON_GART_PAGE_VALID | RADEON_GART_PAGE_READ |
@@ -574,7 +556,7 @@ static int radeon_ttm_backend_bind(struct ttm_tt *ttm,
        return 0;
 }
 
-static int radeon_ttm_backend_unbind(struct ttm_tt *ttm)
+static void radeon_ttm_backend_unbind(struct ttm_tt *ttm)
 {
        struct radeon_ttm_tt *gtt = (void *)ttm;
 
@@ -582,8 +564,6 @@ static int radeon_ttm_backend_unbind(struct ttm_tt *ttm)
 
        if (gtt->userptr)
                radeon_ttm_tt_unpin_userptr(ttm);
-
-       return 0;
 }
 
 static void radeon_ttm_backend_destroy(struct ttm_tt *ttm)
@@ -827,8 +807,8 @@ void radeon_ttm_fini(struct radeon_device *rdev)
                }
                radeon_bo_unref(&rdev->stolen_vga_memory);
        }
-       ttm_range_man_fini(&rdev->mman.bdev, &rdev->mman.bdev.man[TTM_PL_VRAM]);
-       ttm_range_man_fini(&rdev->mman.bdev, &rdev->mman.bdev.man[TTM_PL_TT]);
+       ttm_range_man_fini(&rdev->mman.bdev, TTM_PL_VRAM);
+       ttm_range_man_fini(&rdev->mman.bdev, TTM_PL_TT);
        ttm_bo_device_release(&rdev->mman.bdev);
        radeon_gart_fini(rdev);
        rdev->mman.initialized = false;
@@ -839,12 +819,12 @@ void radeon_ttm_fini(struct radeon_device *rdev)
  * isn't running */
 void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
 {
-       struct ttm_mem_type_manager *man;
+       struct ttm_resource_manager *man;
 
        if (!rdev->mman.initialized)
                return;
 
-       man = &rdev->mman.bdev.man[TTM_PL_VRAM];
+       man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
        /* this just adjusts TTM size idea, which sets lpfn to the correct value */
        man->size = size >> PAGE_SHIFT;
 }
@@ -898,7 +878,7 @@ static int radeon_mm_dump_table(struct seq_file *m, void *data)
        unsigned ttm_pl = *(int*)node->info_ent->data;
        struct drm_device *dev = node->minor->dev;
        struct radeon_device *rdev = dev->dev_private;
-       struct ttm_mem_type_manager *man = &rdev->mman.bdev.man[ttm_pl];
+       struct ttm_resource_manager *man = ttm_manager_type(&rdev->mman.bdev, ttm_pl);
        struct drm_printer p = drm_seq_file_printer(m);
 
        man->func->debug(man, &p);