aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/virtio/virtgpu_ttm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_ttm.c')
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_ttm.c62
1 files changed, 0 insertions, 62 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_ttm.c b/drivers/gpu/drm/virtio/virtgpu_ttm.c
index cd63dffa6d40..4bfbf25fabff 100644
--- a/drivers/gpu/drm/virtio/virtgpu_ttm.c
+++ b/drivers/gpu/drm/virtio/virtgpu_ttm.c
@@ -50,62 +50,6 @@ virtio_gpu_device *virtio_gpu_get_vgdev(struct ttm_bo_device *bdev)
50 return vgdev; 50 return vgdev;
51} 51}
52 52
53static int virtio_gpu_ttm_mem_global_init(struct drm_global_reference *ref)
54{
55 return ttm_mem_global_init(ref->object);
56}
57
58static void virtio_gpu_ttm_mem_global_release(struct drm_global_reference *ref)
59{
60 ttm_mem_global_release(ref->object);
61}
62
63static int virtio_gpu_ttm_global_init(struct virtio_gpu_device *vgdev)
64{
65 struct drm_global_reference *global_ref;
66 int r;
67
68 vgdev->mman.mem_global_referenced = false;
69 global_ref = &vgdev->mman.mem_global_ref;
70 global_ref->global_type = DRM_GLOBAL_TTM_MEM;
71 global_ref->size = sizeof(struct ttm_mem_global);
72 global_ref->init = &virtio_gpu_ttm_mem_global_init;
73 global_ref->release = &virtio_gpu_ttm_mem_global_release;
74
75 r = drm_global_item_ref(global_ref);
76 if (r != 0) {
77 DRM_ERROR("Failed setting up TTM memory accounting "
78 "subsystem.\n");
79 return r;
80 }
81
82 vgdev->mman.bo_global_ref.mem_glob =
83 vgdev->mman.mem_global_ref.object;
84 global_ref = &vgdev->mman.bo_global_ref.ref;
85 global_ref->global_type = DRM_GLOBAL_TTM_BO;
86 global_ref->size = sizeof(struct ttm_bo_global);
87 global_ref->init = &ttm_bo_global_init;
88 global_ref->release = &ttm_bo_global_release;
89 r = drm_global_item_ref(global_ref);
90 if (r != 0) {
91 DRM_ERROR("Failed setting up TTM BO subsystem.\n");
92 drm_global_item_unref(&vgdev->mman.mem_global_ref);
93 return r;
94 }
95
96 vgdev->mman.mem_global_referenced = true;
97 return 0;
98}
99
100static void virtio_gpu_ttm_global_fini(struct virtio_gpu_device *vgdev)
101{
102 if (vgdev->mman.mem_global_referenced) {
103 drm_global_item_unref(&vgdev->mman.bo_global_ref.ref);
104 drm_global_item_unref(&vgdev->mman.mem_global_ref);
105 vgdev->mman.mem_global_referenced = false;
106 }
107}
108
109int virtio_gpu_mmap(struct file *filp, struct vm_area_struct *vma) 53int virtio_gpu_mmap(struct file *filp, struct vm_area_struct *vma)
110{ 54{
111 struct drm_file *file_priv; 55 struct drm_file *file_priv;
@@ -382,12 +326,8 @@ int virtio_gpu_ttm_init(struct virtio_gpu_device *vgdev)
382{ 326{
383 int r; 327 int r;
384 328
385 r = virtio_gpu_ttm_global_init(vgdev);
386 if (r)
387 return r;
388 /* No others user of address space so set it to 0 */ 329 /* No others user of address space so set it to 0 */
389 r = ttm_bo_device_init(&vgdev->mman.bdev, 330 r = ttm_bo_device_init(&vgdev->mman.bdev,
390 vgdev->mman.bo_global_ref.ref.object,
391 &virtio_gpu_bo_driver, 331 &virtio_gpu_bo_driver,
392 vgdev->ddev->anon_inode->i_mapping, 332 vgdev->ddev->anon_inode->i_mapping,
393 DRM_FILE_PAGE_OFFSET, 0); 333 DRM_FILE_PAGE_OFFSET, 0);
@@ -406,13 +346,11 @@ int virtio_gpu_ttm_init(struct virtio_gpu_device *vgdev)
406err_mm_init: 346err_mm_init:
407 ttm_bo_device_release(&vgdev->mman.bdev); 347 ttm_bo_device_release(&vgdev->mman.bdev);
408err_dev_init: 348err_dev_init:
409 virtio_gpu_ttm_global_fini(vgdev);
410 return r; 349 return r;
411} 350}
412 351
413void virtio_gpu_ttm_fini(struct virtio_gpu_device *vgdev) 352void virtio_gpu_ttm_fini(struct virtio_gpu_device *vgdev)
414{ 353{
415 ttm_bo_device_release(&vgdev->mman.bdev); 354 ttm_bo_device_release(&vgdev->mman.bdev);
416 virtio_gpu_ttm_global_fini(vgdev);
417 DRM_INFO("virtio_gpu: ttm finalized\n"); 355 DRM_INFO("virtio_gpu: ttm finalized\n");
418} 356}