Skip to content

Instantly share code, notes, and snippets.

@tiagovignatti
Created July 23, 2015 20:57
Show Gist options
  • Save tiagovignatti/08c9d63d1f6539c5ed68 to your computer and use it in GitHub Desktop.
Save tiagovignatti/08c9d63d1f6539c5ed68 to your computer and use it in GitHub Desktop.
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index e1790af..5526fd5 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -39,6 +39,7 @@
#include <drm/drmP.h>
#include <drm/drm_core.h>
+//unsigned int drm_debug = 15; /* 1 to enable debug output */
unsigned int drm_debug = 0; /* 1 to enable debug output */
EXPORT_SYMBOL(drm_debug);
diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
index 5d0f65d..489e335 100644
--- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
+++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
@@ -199,19 +199,21 @@ static int i915_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *
{
struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf);
struct drm_device *dev = obj->base.dev;
+ int ret;
- if (obj->base.size < vma->vm_end - vma->vm_start)
+ /* On non-LLC machines we'd need to be careful cause CPU and GPU don't share
+ * the CPU's L3 cache and coherency may hurt when CPU mapping. */
+ if (!HAS_LLC(dev))
return -EINVAL;
- vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
- vma->vm_ops = dev->driver->gem_vm_ops;
- vma->vm_private_data = &obj->base;
- vma->vm_page_prot =
- pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
+ if (!obj->base.filp)
+ return -EINVAL;
- vma->vm_ops->open(vma);
+ ret = obj->base.filp->f_op->mmap(obj->base.filp, vma);
+ fput(vma->vm_file);
+ vma->vm_file = get_file(obj->base.filp);
- return 0;
+ return ret;
}
static int i915_gem_begin_cpu_access(struct dma_buf *dma_buf, size_t start, size_t length, enum dma_data_direction direction)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment