Merge branch 'topic/ppgtt' into drm-intel-next-queued
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 25 Jan 2014 20:14:57 +0000 (21:14 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 25 Jan 2014 20:14:57 +0000 (21:14 +0100)
Because whatever.*

* This should contain a fairly long list of issues and still
unresolved resgressions, but I didn't really get a vote.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
14 files changed:
1  2 
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_evict.c
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/i915_gpu_error.c
drivers/gpu/drm/i915/intel_fbdev.c
drivers/gpu/drm/i915/intel_overlay.c
drivers/gpu/drm/i915/intel_pm.c
drivers/gpu/drm/i915/intel_ringbuffer.c
drivers/gpu/drm/i915/intel_uncore.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -91,9 -91,10 +91,10 @@@ eb_lookup_vmas(struct eb_vmas *eb
               struct i915_address_space *vm,
               struct drm_file *file)
  {
+       struct drm_i915_private *dev_priv = vm->dev->dev_private;
        struct drm_i915_gem_object *obj;
        struct list_head objects;
 -      int i, ret = 0;
 +      int i, ret;
  
        INIT_LIST_HEAD(&objects);
        spin_lock(&file->table_lock);
        spin_unlock(&file->table_lock);
  
        i = 0;
 -      list_for_each_entry(obj, &objects, obj_exec_link) {
 +      while (!list_empty(&objects)) {
                struct i915_vma *vma;
+               struct i915_address_space *bind_vm = vm;
+               if (exec[i].flags & EXEC_OBJECT_NEEDS_GTT &&
+                   USES_FULL_PPGTT(vm->dev)) {
+                       ret = -EINVAL;
+                       goto out;
+               }
+               /* If we have secure dispatch, or the userspace assures us that
+                * they know what they're doing, use the GGTT VM.
+                */
+               if (((args->flags & I915_EXEC_SECURE) &&
+                   (i == (args->buffer_count - 1))))
+                       bind_vm = &dev_priv->gtt.base;
  
 +              obj = list_first_entry(&objects,
 +                                     struct drm_i915_gem_object,
 +                                     obj_exec_link);
 +
                /*
                 * NOTE: We can leak any vmas created here when something fails
                 * later on. But that's no issue since vma_unbind can deal with
@@@ -1438,11 -1727,7 +1727,10 @@@ static int i915_gmch_probe(struct drm_d
  
        dev_priv->gtt.do_idle_maps = needs_idle_maps(dev_priv->dev);
        dev_priv->gtt.base.clear_range = i915_ggtt_clear_range;
-       dev_priv->gtt.base.insert_entries = i915_ggtt_insert_entries;
  
 +      if (unlikely(dev_priv->gtt.do_idle_maps))
 +              DRM_INFO("applying Ironlake quirks for intel_iommu\n");
 +
        return 0;
  }
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge