29 #include <linux/export.h>
69 struct drm_gem_object *obj;
79 if (obj->import_attach) {
80 get_dma_buf(obj->import_attach->dmabuf);
81 *prime_fd =
dma_buf_fd(obj->import_attach->dmabuf, flags);
82 drm_gem_object_unreference_unlocked(obj);
87 if (obj->export_dma_buf) {
88 get_dma_buf(obj->export_dma_buf);
89 *prime_fd =
dma_buf_fd(obj->export_dma_buf, flags);
90 drm_gem_object_unreference_unlocked(obj);
92 buf = dev->driver->gem_prime_export(dev, obj, flags);
97 drm_gem_object_unreference_unlocked(obj);
101 obj->export_dma_buf =
buf;
108 obj->export_dma_buf, handle);
110 drm_gem_object_unreference_unlocked(obj);
124 struct drm_gem_object *obj;
129 return PTR_ERR(dma_buf);
141 obj = dev->driver->gem_prime_import(dev, dma_buf);
148 drm_gem_object_unreference_unlocked(obj);
164 drm_gem_object_handle_unreference_unlocked(obj);
173 struct drm_file *file_priv)
178 if (!drm_core_check_feature(dev, DRIVER_PRIME))
181 if (!dev->driver->prime_handle_to_fd)
191 return dev->driver->prime_handle_to_fd(dev, file_priv,
196 struct drm_file *file_priv)
200 if (!drm_core_check_feature(dev, DRIVER_PRIME))
203 if (!dev->driver->prime_fd_to_handle)
206 return dev->driver->prime_fd_to_handle(dev, file_priv,
233 sg_set_page(iter, pages[i],
PAGE_SIZE, 0);
263 if (
WARN_ON(pg_index >= max_pages))
265 pages[pg_index] =
page;
267 addrs[pg_index] =
addr;
283 attach = obj->import_attach;
295 INIT_LIST_HEAD(&prime_fpriv->head);
320 list_add(&member->
entry, &prime_fpriv->head);
330 if (member->
dma_buf == dma_buf) {
345 if (member->
dma_buf == dma_buf) {