mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-01 14:52:32 +00:00
drm/vgem: Drop vgem_drm_gem_mmap
It's duplicating (without using some of the helpers) drm_gem_mmap with
the addition that it can redirect to drm-buf mmap support. But prime
import/export was dropped in
commit 990ed27207
Author: Rob Clark <robdclark@gmail.com>
Date: Thu May 21 11:58:30 2015 -0400
drm/vgem: drop DRIVER_PRIME (v2)
for now, so this is dead code. And since I want to rework the locking
for drm_gem_mmap it seems simpler to de-dupe this code for now and
then start over with the reworked one again, if we want to resurrect
this all indeed.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://mid.gmane.org/1444894601-5200-8-git-send-email-daniel.vetter@ffwll.ch
Acked-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
3c67d839b3
commit
3d57b42cab
@ -235,66 +235,13 @@ unlock:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int vgem_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||
{
|
||||
struct drm_file *priv = filp->private_data;
|
||||
struct drm_device *dev = priv->minor->dev;
|
||||
struct drm_vma_offset_node *node;
|
||||
struct drm_gem_object *obj;
|
||||
struct drm_vgem_gem_object *vgem_obj;
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
|
||||
node = drm_vma_offset_exact_lookup(dev->vma_offset_manager,
|
||||
vma->vm_pgoff,
|
||||
vma_pages(vma));
|
||||
if (!node) {
|
||||
ret = -EINVAL;
|
||||
goto out_unlock;
|
||||
} else if (!drm_vma_node_is_allowed(node, filp)) {
|
||||
ret = -EACCES;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
obj = container_of(node, struct drm_gem_object, vma_node);
|
||||
|
||||
vgem_obj = to_vgem_bo(obj);
|
||||
|
||||
if (obj->dma_buf && vgem_obj->use_dma_buf) {
|
||||
ret = dma_buf_mmap(obj->dma_buf, vma, 0);
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
if (!obj->dev->driver->gem_vm_ops) {
|
||||
ret = -EINVAL;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP;
|
||||
vma->vm_ops = obj->dev->driver->gem_vm_ops;
|
||||
vma->vm_private_data = vgem_obj;
|
||||
vma->vm_page_prot =
|
||||
pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
||||
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
drm_gem_vm_open(vma);
|
||||
return ret;
|
||||
|
||||
out_unlock:
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static struct drm_ioctl_desc vgem_ioctls[] = {
|
||||
};
|
||||
|
||||
static const struct file_operations vgem_driver_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = drm_open,
|
||||
.mmap = vgem_drm_gem_mmap,
|
||||
.mmap = drm_gem_mmap,
|
||||
.poll = drm_poll,
|
||||
.read = drm_read,
|
||||
.unlocked_ioctl = drm_ioctl,
|
||||
|
Loading…
Reference in New Issue
Block a user