Lines Matching refs:obj
38 struct drm_i915_gem_object *obj = dma_buf_to_obj(attachment->dmabuf); in i915_gem_map_dma_buf() local
43 ret = i915_mutex_lock_interruptible(obj->base.dev); in i915_gem_map_dma_buf()
47 ret = i915_gem_object_get_pages(obj); in i915_gem_map_dma_buf()
51 i915_gem_object_pin_pages(obj); in i915_gem_map_dma_buf()
60 ret = sg_alloc_table(st, obj->pages->nents, GFP_KERNEL); in i915_gem_map_dma_buf()
64 src = obj->pages->sgl; in i915_gem_map_dma_buf()
66 for (i = 0; i < obj->pages->nents; i++) { in i915_gem_map_dma_buf()
77 mutex_unlock(&obj->base.dev->struct_mutex); in i915_gem_map_dma_buf()
85 i915_gem_object_unpin_pages(obj); in i915_gem_map_dma_buf()
87 mutex_unlock(&obj->base.dev->struct_mutex); in i915_gem_map_dma_buf()
96 struct drm_i915_gem_object *obj = dma_buf_to_obj(attachment->dmabuf); in i915_gem_unmap_dma_buf() local
98 mutex_lock(&obj->base.dev->struct_mutex); in i915_gem_unmap_dma_buf()
104 i915_gem_object_unpin_pages(obj); in i915_gem_unmap_dma_buf()
106 mutex_unlock(&obj->base.dev->struct_mutex); in i915_gem_unmap_dma_buf()
111 struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf); in i915_gem_dmabuf_vmap() local
112 struct drm_device *dev = obj->base.dev; in i915_gem_dmabuf_vmap()
121 if (obj->dma_buf_vmapping) { in i915_gem_dmabuf_vmap()
122 obj->vmapping_count++; in i915_gem_dmabuf_vmap()
126 ret = i915_gem_object_get_pages(obj); in i915_gem_dmabuf_vmap()
130 i915_gem_object_pin_pages(obj); in i915_gem_dmabuf_vmap()
134 pages = drm_malloc_ab(obj->base.size >> PAGE_SHIFT, sizeof(*pages)); in i915_gem_dmabuf_vmap()
139 for_each_sg_page(obj->pages->sgl, &sg_iter, obj->pages->nents, 0) in i915_gem_dmabuf_vmap()
142 obj->dma_buf_vmapping = vmap(pages, i, 0, PAGE_KERNEL); in i915_gem_dmabuf_vmap()
145 if (!obj->dma_buf_vmapping) in i915_gem_dmabuf_vmap()
148 obj->vmapping_count = 1; in i915_gem_dmabuf_vmap()
151 return obj->dma_buf_vmapping; in i915_gem_dmabuf_vmap()
154 i915_gem_object_unpin_pages(obj); in i915_gem_dmabuf_vmap()
162 struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf); in i915_gem_dmabuf_vunmap() local
163 struct drm_device *dev = obj->base.dev; in i915_gem_dmabuf_vunmap()
166 if (--obj->vmapping_count == 0) { in i915_gem_dmabuf_vunmap()
167 vunmap(obj->dma_buf_vmapping); in i915_gem_dmabuf_vunmap()
168 obj->dma_buf_vmapping = NULL; in i915_gem_dmabuf_vunmap()
170 i915_gem_object_unpin_pages(obj); in i915_gem_dmabuf_vunmap()
201 struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf); in i915_gem_begin_cpu_access() local
202 struct drm_device *dev = obj->base.dev; in i915_gem_begin_cpu_access()
210 ret = i915_gem_object_set_to_cpu_domain(obj, write); in i915_gem_begin_cpu_access()
232 struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); in i915_gem_prime_export() local
241 if (obj->ops->dmabuf_export) { in i915_gem_prime_export()
242 int ret = obj->ops->dmabuf_export(obj); in i915_gem_prime_export()
250 static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj) in i915_gem_object_get_pages_dmabuf() argument
254 sg = dma_buf_map_attachment(obj->base.import_attach, DMA_BIDIRECTIONAL); in i915_gem_object_get_pages_dmabuf()
258 obj->pages = sg; in i915_gem_object_get_pages_dmabuf()
262 static void i915_gem_object_put_pages_dmabuf(struct drm_i915_gem_object *obj) in i915_gem_object_put_pages_dmabuf() argument
264 dma_buf_unmap_attachment(obj->base.import_attach, in i915_gem_object_put_pages_dmabuf()
265 obj->pages, DMA_BIDIRECTIONAL); in i915_gem_object_put_pages_dmabuf()
277 struct drm_i915_gem_object *obj; in i915_gem_prime_import() local
282 obj = dma_buf_to_obj(dma_buf); in i915_gem_prime_import()
284 if (obj->base.dev == dev) { in i915_gem_prime_import()
289 drm_gem_object_reference(&obj->base); in i915_gem_prime_import()
290 return &obj->base; in i915_gem_prime_import()
301 obj = i915_gem_object_alloc(dev); in i915_gem_prime_import()
302 if (obj == NULL) { in i915_gem_prime_import()
307 drm_gem_private_object_init(dev, &obj->base, dma_buf->size); in i915_gem_prime_import()
308 i915_gem_object_init(obj, &i915_gem_object_dmabuf_ops); in i915_gem_prime_import()
309 obj->base.import_attach = attach; in i915_gem_prime_import()
311 return &obj->base; in i915_gem_prime_import()