]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'drm-intel/for-linux-next'
authorStephen Rothwell <sfr@canb.auug.org.au>
Fri, 19 Jul 2013 01:23:16 +0000 (11:23 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 19 Jul 2013 01:23:16 +0000 (11:23 +1000)
Conflicts:
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_gem.c

14 files changed:
1  2 
drivers/gpu/drm/drm_mm.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_stolen.c
drivers/gpu/drm/i915/intel_ddi.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_lvds.c
drivers/gpu/drm/i915/intel_pm.c
drivers/gpu/drm/i915/intel_ringbuffer.c
include/drm/drm_mm.h

Simple merge
index 095e3dbba3074c1bd7aadeca64d14a84bf7c46e6,fd52de77a33ff0ddcb25f6cc4a3cef35fdb98483..dc581400fa0fdd8a8503f460dac0c0bee9ed5af2
@@@ -1495,16 -1490,12 +1490,19 @@@ int i915_driver_load(struct drm_device 
        dev_priv->dev = dev;
        dev_priv->info = info;
  
-       spin_lock_init(&dev_priv->rps.lock);
 +      spin_lock_init(&dev_priv->irq_lock);
 +      spin_lock_init(&dev_priv->gpu_error.lock);
 +      spin_lock_init(&dev_priv->backlight.lock);
 +      mutex_init(&dev_priv->dpio_lock);
 +      mutex_init(&dev_priv->rps.hw_lock);
 +      mutex_init(&dev_priv->modeset_restore_lock);
 +
        i915_dump_device_info(dev_priv);
  
+       INIT_LIST_HEAD(&dev_priv->vm_list);
+       INIT_LIST_HEAD(&dev_priv->gtt.base.global_link);
+       list_add(&dev_priv->gtt.base.global_link, &dev_priv->vm_list);
        if (i915_get_bridge_dev(dev)) {
                ret = -EIO;
                goto free_priv;
Simple merge
Simple merge
index d9e2208cfe98f2fdcb3957bf4ee13f0497e06dfb,bd8c0086d0c1713cf96ea0efc8051a833582ef50..76e65b216b1abc4da5fa139c6bde4c93ce8b27f6
@@@ -2285,14 -2282,11 +2286,10 @@@ void i915_gem_reset(struct drm_device *
        /* Move everything out of the GPU domains to ensure we do any
         * necessary invalidation upon reuse.
         */
-       list_for_each_entry(obj,
-                           &dev_priv->mm.inactive_list,
-                           mm_list)
-       {
+       list_for_each_entry(obj, &vm->inactive_list, mm_list)
                obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS;
-       }
  
 -      /* The fence registers are invalidated so clear them out */
 -      i915_gem_reset_fences(dev);
 +      i915_gem_restore_fences(dev);
  }
  
  /**
@@@ -2676,27 -2679,12 +2681,27 @@@ static void i965_write_fence_reg(struc
                fence_pitch_shift = I965_FENCE_PITCH_SHIFT;
        }
  
 +      fence_reg += reg * 8;
 +
 +      /* To w/a incoherency with non-atomic 64-bit register updates,
 +       * we split the 64-bit update into two 32-bit writes. In order
 +       * for a partial fence not to be evaluated between writes, we
 +       * precede the update with write to turn off the fence register,
 +       * and only enable the fence as the last step.
 +       *
 +       * For extra levels of paranoia, we make sure each step lands
 +       * before applying the next step.
 +       */
 +      I915_WRITE(fence_reg, 0);
 +      POSTING_READ(fence_reg);
 +
        if (obj) {
-               u32 size = obj->gtt_space->size;
+               u32 size = i915_gem_obj_ggtt_size(obj);
 +              uint64_t val;
  
-               val = (uint64_t)((obj->gtt_offset + size - 4096) &
+               val = (uint64_t)((i915_gem_obj_ggtt_offset(obj) + size - 4096) &
                                 0xfffff000) << 32;
-               val |= obj->gtt_offset & 0xfffff000;
+               val |= i915_gem_obj_ggtt_offset(obj) & 0xfffff000;
                val |= (uint64_t)((obj->stride / 128) - 1) << fence_pitch_shift;
                if (obj->tiling_mode == I915_TILING_Y)
                        val |= 1 << I965_FENCE_TILING_Y_SHIFT;
@@@ -4006,11 -4050,8 +4036,6 @@@ i915_gem_idle(struct drm_device *dev
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                i915_gem_evict_everything(dev);
  
-       /* Hack!  Don't let anybody do execbuf while we don't control the chip.
-        * We need to replace this with a semaphore, or something.
-        * And not confound mm.suspended!
-        */
-       dev_priv->mm.suspended = 1;
 -      i915_gem_reset_fences(dev);
 -
        del_timer_sync(&dev_priv->gpu_error.hangcheck_timer);
  
        i915_kernel_lost_context(dev);
@@@ -4608,7 -4664,7 +4649,7 @@@ i915_gem_inactive_shrink(struct shrinke
        list_for_each_entry(obj, &dev_priv->mm.unbound_list, global_list)
                if (obj->pages_pin_count == 0)
                        cnt += obj->base.size >> PAGE_SHIFT;
-       list_for_each_entry(obj, &dev_priv->mm.inactive_list, mm_list)
 -      list_for_each_entry(obj, &vm->inactive_list, global_list)
++      list_for_each_entry(obj, &vm->inactive_list, mm_list)
                if (obj->pin_count == 0 && obj->pages_pin_count == 0)
                        cnt += obj->base.size >> PAGE_SHIFT;
  
index 982d4732cecff93e45370f30dfab03cc1bfdb32a,fc894f7d32e149d703c1bd8da1361642c6f53197..f52613605fe193ab15ae78a1234b7e12706ba2cb
@@@ -147,10 -164,10 +164,10 @@@ int i915_gem_stolen_setup_compression(s
  {
        struct drm_i915_private *dev_priv = dev->dev_private;
  
 -      if (dev_priv->mm.stolen_base == 0)
 +      if (!drm_mm_initialized(&dev_priv->mm.stolen))
                return -ENODEV;
  
-       if (size < dev_priv->cfb_size)
+       if (size < dev_priv->fbc.size)
                return 0;
  
        /* Release any current block */
@@@ -331,10 -348,13 +351,13 @@@ i915_gem_object_create_stolen_for_preal
                                               u32 size)
  {
        struct drm_i915_private *dev_priv = dev->dev_private;
+       struct i915_address_space *vm = &dev_priv->gtt.base;
        struct drm_i915_gem_object *obj;
        struct drm_mm_node *stolen;
+       struct i915_vma *vma;
+       int ret;
  
 -      if (dev_priv->mm.stolen_base == 0)
 +      if (!drm_mm_initialized(&dev_priv->mm.stolen))
                return NULL;
  
        DRM_DEBUG_KMS("creating preallocated stolen object: stolen_offset=%x, gtt_offset=%x, size=%x\n",
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge