]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/i915_gem.c
drm/i915: Reject bind_to_gtt() early if object > aperture
[karo-tx-linux.git] / drivers / gpu / drm / i915 / i915_gem.c
index 1e74204f9be297c41b193390df6196a1e596445f..1307c575fac841f2d90a4f5ea1d1f836b49d3f6f 100644 (file)
@@ -1785,7 +1785,7 @@ i915_get_gem_seqno(struct drm_device *dev)
 {
        drm_i915_private_t *dev_priv = dev->dev_private;
 
-       if (IS_I965G(dev))
+       if (HAS_PIPE_CONTROL(dev))
                return ((volatile u32 *)(dev_priv->seqno_page))[0];
        else
                return READ_HWSP(dev_priv, I915_GEM_HWS_INDEX);
@@ -2641,6 +2641,14 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
                return -EINVAL;
        }
 
+       /* If the object is bigger than the entire aperture, reject it early
+        * before evicting everything in a vain attempt to find space.
+        */
+       if (obj->size > dev->gtt_total) {
+               DRM_ERROR("Attempting to bind an object larger than the aperture\n");
+               return -E2BIG;
+       }
+
  search_free:
        free_space = drm_mm_search_free(&dev_priv->mm.gtt_space,
                                        obj->size, alignment, 0);