This source file includes following definitions.
- virtgpu_gem_prime_get_sg_table
- virtgpu_gem_prime_import_sg_table
- virtgpu_gem_prime_vmap
- virtgpu_gem_prime_vunmap
- virtgpu_gem_prime_mmap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <drm/drm_prime.h>
26
27 #include "virtgpu_drv.h"
28
29
30
31
32
33 struct sg_table *virtgpu_gem_prime_get_sg_table(struct drm_gem_object *obj)
34 {
35 struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
36
37 if (!bo->tbo.ttm->pages || !bo->tbo.ttm->num_pages)
38
39 return ERR_PTR(-EINVAL);
40
41 return drm_prime_pages_to_sg(bo->tbo.ttm->pages,
42 bo->tbo.ttm->num_pages);
43 }
44
45 struct drm_gem_object *virtgpu_gem_prime_import_sg_table(
46 struct drm_device *dev, struct dma_buf_attachment *attach,
47 struct sg_table *table)
48 {
49 return ERR_PTR(-ENODEV);
50 }
51
52 void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj)
53 {
54 struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
55 int ret;
56
57 ret = virtio_gpu_object_kmap(bo);
58 if (ret)
59 return NULL;
60 return bo->vmap;
61 }
62
63 void virtgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
64 {
65 virtio_gpu_object_kunmap(gem_to_virtio_gpu_obj(obj));
66 }
67
68 int virtgpu_gem_prime_mmap(struct drm_gem_object *obj,
69 struct vm_area_struct *vma)
70 {
71 return drm_gem_prime_mmap(obj, vma);
72 }