diff options
author | Dave Airlie <airlied@redhat.com> | 2018-11-28 19:21:23 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-11-28 19:28:49 -0500 |
commit | 61647c77cb15354a329cbb36fe7a2253b36b51b1 (patch) | |
tree | 59d887f99bc4a2bdddc7cfc1d81794c2a4cdc759 /drivers/gpu/drm/drm_prime.c | |
parent | 1a31c26ed7b495f152e3103dc7c68e3307a39541 (diff) | |
parent | 08f73d668048ffa3ba6b1426b6ba0a89b16aefd7 (diff) |
Merge tag 'drm-misc-next-2018-11-28' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for v4.21:
Core Changes:
- Merge drm_info.c into drm_debugfs.c
- Complete the fake drm_crtc_commit's hw_done/flip_done sooner.
- Remove deprecated drm_obj_ref/unref functions. All drivers use get/put now.
- Decrease stack use of drm_gem_prime_mmap.
- Improve documentation for dumb callbacks.
Driver Changes:
- Add edid support to virtio.
- Wait on implicit fence in meson and sun4i.
- Add support for BGRX8888 to sun4i.
- Preparation patches for sun4i driver to start supporting linear and tiled YUV formats.
- Add support for HDMI 1.4 4k modes to meson, and support for VIC alternate timings.
- Drop custom dumb_map in vkms.
- Small fixes and cleanups to v3d.
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/151a3270-b1be-ed75-bd58-6b29d741f592@linux.intel.com
Diffstat (limited to 'drivers/gpu/drm/drm_prime.c')
-rw-r--r-- | drivers/gpu/drm/drm_prime.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index 5737cb8c6f03..231e3f6d5f41 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c | |||
@@ -663,24 +663,33 @@ EXPORT_SYMBOL(drm_gem_prime_handle_to_fd); | |||
663 | */ | 663 | */ |
664 | int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma) | 664 | int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma) |
665 | { | 665 | { |
666 | /* Used by drm_gem_mmap() to lookup the GEM object */ | 666 | struct drm_file *priv; |
667 | struct drm_file priv = { | 667 | struct file *fil; |
668 | .minor = obj->dev->primary, | ||
669 | }; | ||
670 | struct file fil = { | ||
671 | .private_data = &priv, | ||
672 | }; | ||
673 | int ret; | 668 | int ret; |
674 | 669 | ||
675 | ret = drm_vma_node_allow(&obj->vma_node, &priv); | 670 | priv = kzalloc(sizeof(*priv), GFP_KERNEL); |
671 | fil = kzalloc(sizeof(*fil), GFP_KERNEL); | ||
672 | if (!priv || !fil) { | ||
673 | ret = -ENOMEM; | ||
674 | goto out; | ||
675 | } | ||
676 | |||
677 | /* Used by drm_gem_mmap() to lookup the GEM object */ | ||
678 | priv->minor = obj->dev->primary; | ||
679 | fil->private_data = priv; | ||
680 | |||
681 | ret = drm_vma_node_allow(&obj->vma_node, priv); | ||
676 | if (ret) | 682 | if (ret) |
677 | return ret; | 683 | goto out; |
678 | 684 | ||
679 | vma->vm_pgoff += drm_vma_node_start(&obj->vma_node); | 685 | vma->vm_pgoff += drm_vma_node_start(&obj->vma_node); |
680 | 686 | ||
681 | ret = obj->dev->driver->fops->mmap(&fil, vma); | 687 | ret = obj->dev->driver->fops->mmap(fil, vma); |
682 | 688 | ||
683 | drm_vma_node_revoke(&obj->vma_node, &priv); | 689 | drm_vma_node_revoke(&obj->vma_node, priv); |
690 | out: | ||
691 | kfree(priv); | ||
692 | kfree(fil); | ||
684 | 693 | ||
685 | return ret; | 694 | return ret; |
686 | } | 695 | } |