diff options
author | Chris Wilson | 2012-12-16 13:43:36 +0100 |
---|---|---|
committer | Daniel Vetter | 2012-12-17 12:28:23 +0100 |
commit | eb119bd612906519cacef2536a9a524c2da5f7fb (patch) | |
tree | 946f3e2f589c6bf09b2200c7dfe7de0fbcb59667 /drivers/gpu/drm/i915/i915_gem.c | |
parent | drm/i915: Remove stale comment about intel_dp_detect() (diff) | |
download | kernel-qcow2-linux-eb119bd612906519cacef2536a9a524c2da5f7fb.tar.gz kernel-qcow2-linux-eb119bd612906519cacef2536a9a524c2da5f7fb.tar.xz kernel-qcow2-linux-eb119bd612906519cacef2536a9a524c2da5f7fb.zip |
drm/i915: Access to snooped system memory through the GTT is incoherent
We ignore all the user requests to handle flushing to the GTT domain if
the user requests such on a snoopable bo, and as such access through the
GTT to such pages remains incoherent. The specs even warn that such
behaviour is undefined - a strong reason never to do so.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 6380c6083cb2..d15c86279d02 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1341,6 +1341,12 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) trace_i915_gem_object_fault(obj, page_offset, true, write); + /* Access to snoopable pages through the GTT is incoherent. */ + if (obj->cache_level != I915_CACHE_NONE && !HAS_LLC(dev)) { + ret = -EINVAL; + goto unlock; + } + /* Now bind it into the GTT if needed */ ret = i915_gem_object_pin(obj, 0, true, false); if (ret) |