drm/i915: move bsd dispatch index somewhere better
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 21 May 2014 15:37:52 +0000 (17:37 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 22 May 2014 13:06:31 +0000 (15:06 +0200)
Adding stuff at the bottom is really no how this should be done, since
that's the place for ums/dri dungeons.

This was added in

commit a8ebba75b358f9c912cbcba0c14a2072e7280b2f
Author: Zhao Yakui <yakui.zhao@intel.com>
Date:   Thu Apr 17 10:37:40 2014 +0800

    drm/i915: Use the coarse ping-pong mechanism based on drm fd to dispatch the BSD command on BDW GT3

Also add a note to prevent this from happening again - people really
should be less lazy and take more time to look for a good home of
their new driver-global state.

Cc: Imre Deak <imre.deak@intel.com>
Cc: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_execbuffer.c

index f14c47a715a4c9851ab97e49b06609fe2d036ea7..ead67c0c41093684e332da7ac72eed17c4039e12 100644 (file)
@@ -1571,7 +1571,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
        spin_lock_init(&dev_priv->backlight_lock);
        spin_lock_init(&dev_priv->uncore.lock);
        spin_lock_init(&dev_priv->mm.object_stat_lock);
-       dev_priv->ring_index = 0;
        mutex_init(&dev_priv->dpio_lock);
        mutex_init(&dev_priv->modeset_restore_lock);
 
index b90ec692140869e2aa35af2ce04661b3370f90b1..de899b30ae0c552eeedfb836707b34c6b8fed53e 100644 (file)
@@ -1098,6 +1098,9 @@ struct i915_gem_mm {
         */
        bool busy;
 
+       /* the indicator for dispatch video commands on two BSD rings */
+       int bsd_ring_dispatch_index;
+
        /** Bit 6 swizzling required for X tiling */
        uint32_t bit_6_swizzle_x;
        /** Bit 6 swizzling required for Y tiling */
@@ -1553,8 +1556,11 @@ struct drm_i915_private {
        struct i915_dri1_state dri1;
        /* Old ums support infrastructure, same warning applies. */
        struct i915_ums_state ums;
-       /* the indicator for dispatch video commands on two BSD rings */
-       int ring_index;
+
+       /*
+        * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
+        * will be rejected. Instead look for a better place.
+        */
 };
 
 static inline struct drm_i915_private *to_i915(const struct drm_device *dev)
index 94e53a0fcdc30ffd143fe62a8bdf122d88f43e50..de2fd90bdd0fdfec9017fe9c4338ce8d6de8b87e 100644 (file)
@@ -1027,12 +1027,12 @@ static int gen8_dispatch_bsd_ring(struct drm_device *dev,
                int ring_id;
 
                mutex_lock(&dev->struct_mutex);
-               if (dev_priv->ring_index == 0) {
+               if (dev_priv->mm.bsd_ring_dispatch_index == 0) {
                        ring_id = VCS;
-                       dev_priv->ring_index = 1;
+                       dev_priv->mm.bsd_ring_dispatch_index = 1;
                } else {
                        ring_id = VCS2;
-                       dev_priv->ring_index = 0;
+                       dev_priv->mm.bsd_ring_dispatch_index = 0;
                }
                file_priv->bsd_ring = &dev_priv->ring[ring_id];
                mutex_unlock(&dev->struct_mutex);