aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/virtio/virtgpu_object.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-09-27 19:31:03 -0400
committerDave Airlie <airlied@redhat.com>2018-09-27 19:36:48 -0400
commit156e60bc71aa31a3b42b1d66a822c2999bd0994c (patch)
treedbc2fa3c30c78b1465aa29ca37fefbb8a16bde8e /drivers/gpu/drm/virtio/virtgpu_object.c
parentbf78296ab1cb215d0609ac6cff4e43e941e51265 (diff)
parentc2b70ffcd34eca60013d90bd6cd56e60b07adef8 (diff)
Merge tag 'drm-misc-next-2018-09-27' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for 4.20: UAPI Changes: - None Cross-subsystem Changes: - MAINTAINERS: Move udl, mxsfb, and fsl-dcu into drm-misc (Stefan, Sean) Core Changes: - syncobj: Check condition before returning timeout in schedule() (Chris) Driver Changes: - various: First wave of drm_fbdev_generic_setup() conversions (Noralf) - bochs/virtio: More format byte-order improvements (Gerd) - mxsfb: A couple fixes + add runtime pm support (Leonard) - virtio: Add vmap support for prime objects (Ezequiel) Cc: Stefan Agner <stefan@agner.ch> Cc: Sean Paul <sean@poorly.run> Cc: Noralf Trønnes <noralf@tronnes.org> Cc: Gerd Hoffman <kraxel@redhat.com> Cc: Leonard Crestez <leonard.crestez@nxp.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by: Dave Airlie <airlied@redhat.com> From: Sean Paul <sean@poorly.run> Link: https://patchwork.freedesktop.org/patch/msgid/20180927093950.GA180365@art_vandelay
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_object.c')
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_object.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c
index 9f2f470efd9b..eca765537470 100644
--- a/drivers/gpu/drm/virtio/virtgpu_object.c
+++ b/drivers/gpu/drm/virtio/virtgpu_object.c
@@ -37,6 +37,8 @@ static void virtio_gpu_ttm_bo_destroy(struct ttm_buffer_object *tbo)
37 virtio_gpu_cmd_unref_resource(vgdev, bo->hw_res_handle); 37 virtio_gpu_cmd_unref_resource(vgdev, bo->hw_res_handle);
38 if (bo->pages) 38 if (bo->pages)
39 virtio_gpu_object_free_sg_table(bo); 39 virtio_gpu_object_free_sg_table(bo);
40 if (bo->vmap)
41 virtio_gpu_object_kunmap(bo);
40 drm_gem_object_release(&bo->gem_base); 42 drm_gem_object_release(&bo->gem_base);
41 kfree(bo); 43 kfree(bo);
42} 44}
@@ -99,22 +101,23 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
99 return 0; 101 return 0;
100} 102}
101 103
102int virtio_gpu_object_kmap(struct virtio_gpu_object *bo, void **ptr) 104void virtio_gpu_object_kunmap(struct virtio_gpu_object *bo)
105{
106 bo->vmap = NULL;
107 ttm_bo_kunmap(&bo->kmap);
108}
109
110int virtio_gpu_object_kmap(struct virtio_gpu_object *bo)
103{ 111{
104 bool is_iomem; 112 bool is_iomem;
105 int r; 113 int r;
106 114
107 if (bo->vmap) { 115 WARN_ON(bo->vmap);
108 if (ptr) 116
109 *ptr = bo->vmap;
110 return 0;
111 }
112 r = ttm_bo_kmap(&bo->tbo, 0, bo->tbo.num_pages, &bo->kmap); 117 r = ttm_bo_kmap(&bo->tbo, 0, bo->tbo.num_pages, &bo->kmap);
113 if (r) 118 if (r)
114 return r; 119 return r;
115 bo->vmap = ttm_kmap_obj_virtual(&bo->kmap, &is_iomem); 120 bo->vmap = ttm_kmap_obj_virtual(&bo->kmap, &is_iomem);
116 if (ptr)
117 *ptr = bo->vmap;
118 return 0; 121 return 0;
119} 122}
120 123