virtio: Support prime objects vmap/vunmap
authorEzequiel Garcia <ezequiel@collabora.com>
Tue, 25 Sep 2018 16:16:06 +0000 (18:16 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 26 Sep 2018 06:05:07 +0000 (08:05 +0200)
Implement vmap/vunmap so we can export dmabufs to
other drivers, such as video4linux.

Tested with a virtio-gpu / vivid (virtual capture driver)
pipeline, where the vivid driver imports the dmabufs exported
by virtio-gpu.

Note that dma_buf_vmap() does its own vmap counting, so
it's not needed to take care of it in the driver.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20180925161606.17980-4-ezequiel@collabora.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/virtio/virtgpu_prime.c

index d27a1688714f9a6e888348c8cba09d5802b7646b..86ce0ae93f595978fdfed4a1b478ac716417c16b 100644 (file)
@@ -55,13 +55,18 @@ struct drm_gem_object *virtgpu_gem_prime_import_sg_table(
 
 void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj)
 {
-       WARN_ONCE(1, "not implemented");
-       return ERR_PTR(-ENODEV);
+       struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
+       int ret;
+
+       ret = virtio_gpu_object_kmap(bo);
+       if (ret)
+               return NULL;
+       return bo->vmap;
 }
 
 void virtgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
 {
-       WARN_ONCE(1, "not implemented");
+       virtio_gpu_object_kunmap(gem_to_virtio_gpu_obj(obj));
 }
 
 int virtgpu_gem_prime_mmap(struct drm_gem_object *obj,