drm/i915: Ditch dev_priv->ums.mm_suspend
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 19 Nov 2014 19:36:48 +0000 (20:36 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 20 Nov 2014 12:02:57 +0000 (13:02 +0100)
Again just complicates gem init functions and makes a general mess out
of everything.

Good riddance!

v2: In my enthusiasm to start removing dri1/ums crud I went overboard a
bit and killed parts of hangcheck. Resurrect it.

Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
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_execbuffer.c

index 6c96253..c20fa30 100644 (file)
@@ -815,9 +815,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
                        DRM_ERROR("failed to init modeset\n");
                        goto out_power_well;
                }
-       } else {
-               /* Start out suspended in ums mode. */
-               dev_priv->ums.mm_suspended = 1;
        }
 
        i915_setup_sysfs(dev);
index c9f248a..1df4079 100644 (file)
@@ -852,10 +852,7 @@ int i915_reset(struct drm_device *dev)
         * was running at the time of the reset (i.e. we weren't VT
         * switched away).
         */
-       if (drm_core_check_feature(dev, DRIVER_MODESET) ||
-                       !dev_priv->ums.mm_suspended) {
-               dev_priv->ums.mm_suspended = 0;
-
+       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
                /* Used to prevent gem_check_wedged returning -EAGAIN during gpu reset */
                dev_priv->gpu_error.reload_in_reset = true;
 
index a52fba1..3d572a6 100644 (file)
@@ -1121,18 +1121,6 @@ struct i915_power_domains {
        struct i915_power_well *power_wells;
 };
 
-struct i915_ums_state {
-       /**
-        * Flag if the X Server, and thus DRM, is not currently in
-        * control of the device.
-        *
-        * This is set between LeaveVT and EnterVT.  It needs to be
-        * replaced with a semaphore.  It also needs to be
-        * transitioned away from for kernel modesetting.
-        */
-       int mm_suspended;
-};
-
 #define MAX_L3_SLICES 2
 struct intel_l3_parity {
        u32 *remap_info[MAX_L3_SLICES];
@@ -1768,9 +1756,6 @@ struct drm_i915_private {
 
        uint32_t bios_vgacntr;
 
-       /* Old ums support infrastructure, same warning applies. */
-       struct i915_ums_state ums;
-
        /* Abstract the submission mechanism (legacy ringbuffer or execlists) away */
        struct {
                int (*do_execbuf)(struct drm_device *dev, struct drm_file *file,
index bd17109..af30283 100644 (file)
@@ -2501,15 +2501,13 @@ int __i915_add_request(struct intel_engine_cs *ring,
        ring->outstanding_lazy_seqno = 0;
        ring->preallocated_lazy_request = NULL;
 
-       if (!dev_priv->ums.mm_suspended) {
-               i915_queue_hangcheck(ring->dev);
+       i915_queue_hangcheck(ring->dev);
 
-               cancel_delayed_work_sync(&dev_priv->mm.idle_work);
-               queue_delayed_work(dev_priv->wq,
-                                  &dev_priv->mm.retire_work,
-                                  round_jiffies_up_relative(HZ));
-               intel_mark_busy(dev_priv->dev);
-       }
+       cancel_delayed_work_sync(&dev_priv->mm.idle_work);
+       queue_delayed_work(dev_priv->wq,
+                          &dev_priv->mm.retire_work,
+                          round_jiffies_up_relative(HZ));
+       intel_mark_busy(dev_priv->dev);
 
        if (out_seqno)
                *out_seqno = request->seqno;
@@ -4651,9 +4649,6 @@ i915_gem_suspend(struct drm_device *dev)
        int ret = 0;
 
        mutex_lock(&dev->struct_mutex);
-       if (dev_priv->ums.mm_suspended)
-               goto err;
-
        ret = i915_gpu_idle(dev);
        if (ret)
                goto err;
@@ -4665,13 +4660,6 @@ i915_gem_suspend(struct drm_device *dev)
                i915_gem_evict_everything(dev);
 
        i915_gem_stop_ringbuffers(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 ums.mm_suspended!
-        */
-       dev_priv->ums.mm_suspended = !drm_core_check_feature(dev,
-                                                            DRIVER_MODESET);
        mutex_unlock(&dev->struct_mutex);
 
        del_timer_sync(&dev_priv->gpu_error.hangcheck_timer);
index b16eee0..1173831 100644 (file)
@@ -1338,12 +1338,6 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
        if (ret)
                goto pre_mutex_err;
 
-       if (dev_priv->ums.mm_suspended) {
-               mutex_unlock(&dev->struct_mutex);
-               ret = -EBUSY;
-               goto pre_mutex_err;
-       }
-
        ctx = i915_gem_validate_context(dev, file, ring, ctx_id);
        if (IS_ERR(ctx)) {
                mutex_unlock(&dev->struct_mutex);