Merge tag 'drm-intel-next-fixes-2014-12-30' of git://anongit.freedesktop.org/drm...
authorDave Airlie <airlied@gmail.com>
Sun, 4 Jan 2015 07:41:00 +0000 (17:41 +1000)
committerDave Airlie <airlied@gmail.com>
Sun, 4 Jan 2015 07:41:00 +0000 (17:41 +1000)
I've had these since before -rc1, but they missed my last pull
request. Real bug fixes and mostly cc: stable material.

* tag 'drm-intel-next-fixes-2014-12-30' of git://anongit.freedesktop.org/drm-intel:
  drm/i915: add missing rpm ref to i915_gem_pwrite_ioctl
  Revert "drm/i915: Preserve VGACNTR bits from the BIOS"
  drm/i915: Don't call intel_prepare_page_flip() multiple times on gen2-4
  drm/i915: Kill check_power_well() calls

1  2 
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/intel_display.c

@@@ -1756,8 -1756,6 +1756,6 @@@ struct drm_i915_private 
         */
        struct workqueue_struct *dp_wq;
  
-       uint32_t bios_vgacntr;
        /* Abstract the submission mechanism (legacy ringbuffer or execlists) away */
        struct {
                int (*do_execbuf)(struct drm_device *dev, struct drm_file *file,
@@@ -2501,8 -2499,9 +2499,8 @@@ void i915_vma_move_to_active(struct i91
  int i915_gem_dumb_create(struct drm_file *file_priv,
                         struct drm_device *dev,
                         struct drm_mode_create_dumb *args);
 -int i915_gem_dumb_map_offset(struct drm_file *file_priv,
 -                           struct drm_device *dev, uint32_t handle,
 -                           uint64_t *offset);
 +int i915_gem_mmap_gtt(struct drm_file *file_priv, struct drm_device *dev,
 +                    uint32_t handle, uint64_t *offset);
  /**
   * Returns true if seq1 is later than seq2.
   */
@@@ -401,6 -401,7 +401,6 @@@ static in
  i915_gem_create(struct drm_file *file,
                struct drm_device *dev,
                uint64_t size,
 -              bool dumb,
                uint32_t *handle_p)
  {
        struct drm_i915_gem_object *obj;
        if (obj == NULL)
                return -ENOMEM;
  
 -      obj->base.dumb = dumb;
        ret = drm_gem_handle_create(file, &obj->base, &handle);
        /* drop reference from allocate - handle holds it now */
        drm_gem_object_unreference_unlocked(&obj->base);
@@@ -435,7 -437,7 +435,7 @@@ i915_gem_dumb_create(struct drm_file *f
        args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 64);
        args->size = args->pitch * args->height;
        return i915_gem_create(file, dev,
 -                             args->size, true, &args->handle);
 +                             args->size, &args->handle);
  }
  
  /**
@@@ -448,7 -450,7 +448,7 @@@ i915_gem_create_ioctl(struct drm_devic
        struct drm_i915_gem_create *args = data;
  
        return i915_gem_create(file, dev,
 -                             args->size, false, &args->handle);
 +                             args->size, &args->handle);
  }
  
  static inline int
@@@ -1048,6 -1050,7 +1048,7 @@@ in
  i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
                      struct drm_file *file)
  {
+       struct drm_i915_private *dev_priv = dev->dev_private;
        struct drm_i915_gem_pwrite *args = data;
        struct drm_i915_gem_object *obj;
        int ret;
                        return -EFAULT;
        }
  
+       intel_runtime_pm_get(dev_priv);
        ret = i915_mutex_lock_interruptible(dev);
        if (ret)
-               return ret;
+               goto put_rpm;
  
        obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
        if (&obj->base == NULL) {
@@@ -1121,6 -1126,9 +1124,9 @@@ out
        drm_gem_object_unreference(&obj->base);
  unlock:
        mutex_unlock(&dev->struct_mutex);
+ put_rpm:
+       intel_runtime_pm_put(dev_priv);
        return ret;
  }
  
@@@ -1838,10 -1846,10 +1844,10 @@@ static void i915_gem_object_free_mmap_o
        drm_gem_free_mmap_offset(&obj->base);
  }
  
 -static int
 +int
  i915_gem_mmap_gtt(struct drm_file *file,
                  struct drm_device *dev,
 -                uint32_t handle, bool dumb,
 +                uint32_t handle,
                  uint64_t *offset)
  {
        struct drm_i915_private *dev_priv = dev->dev_private;
                goto unlock;
        }
  
 -      /*
 -       * We don't allow dumb mmaps on objects created using another
 -       * interface.
 -       */
 -      WARN_ONCE(dumb && !(obj->base.dumb || obj->base.import_attach),
 -                "Illegal dumb map of accelerated buffer.\n");
 -
        if (obj->base.size > dev_priv->gtt.mappable_end) {
                ret = -E2BIG;
                goto out;
@@@ -1882,6 -1897,15 +1888,6 @@@ unlock
        return ret;
  }
  
 -int
 -i915_gem_dumb_map_offset(struct drm_file *file,
 -                       struct drm_device *dev,
 -                       uint32_t handle,
 -                       uint64_t *offset)
 -{
 -      return i915_gem_mmap_gtt(file, dev, handle, true, offset);
 -}
 -
  /**
   * i915_gem_mmap_gtt_ioctl - prepare an object for GTT mmap'ing
   * @dev: DRM device
@@@ -1903,7 -1927,7 +1909,7 @@@ i915_gem_mmap_gtt_ioctl(struct drm_devi
  {
        struct drm_i915_gem_mmap_gtt *args = data;
  
 -      return i915_gem_mmap_gtt(file, dev, args->handle, false, &args->offset);
 +      return i915_gem_mmap_gtt(file, dev, args->handle, &args->offset);
  }
  
  static inline int
@@@ -4565,6 -4565,7 +4565,6 @@@ static void ironlake_crtc_disable(struc
                ironlake_fdi_disable(crtc);
  
                ironlake_disable_pch_transcoder(dev_priv, pipe);
 -              intel_set_pch_fifo_underrun_reporting(dev_priv, pipe, true);
  
                if (HAS_PCH_CPT(dev)) {
                        /* disable TRANS_DP_CTL */
@@@ -4635,6 -4636,8 +4635,6 @@@ static void haswell_crtc_disable(struc
  
        if (intel_crtc->config.has_pch_encoder) {
                lpt_disable_pch_transcoder(dev_priv);
 -              intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A,
 -                                                    true);
                intel_ddi_fdi_disable(crtc);
        }
  
@@@ -13057,11 -13060,7 +13057,7 @@@ static void i915_disable_vga(struct drm
        vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
        udelay(300);
  
-       /*
-        * Fujitsu-Siemens Lifebook S6010 (830) has problems resuming
-        * from S3 without preserving (some of?) the other bits.
-        */
-       I915_WRITE(vga_reg, dev_priv->bios_vgacntr | VGA_DISP_DISABLE);
+       I915_WRITE(vga_reg, VGA_DISP_DISABLE);
        POSTING_READ(vga_reg);
  }
  
@@@ -13146,8 -13145,6 +13142,6 @@@ void intel_modeset_init(struct drm_devi
  
        intel_shared_dpll_init(dev);
  
-       /* save the BIOS value before clobbering it */
-       dev_priv->bios_vgacntr = I915_READ(i915_vgacntrl_reg(dev));
        /* Just disable it once at startup */
        i915_disable_vga(dev);
        intel_setup_outputs(dev);