drm/i915: Disable waitboosting for mmioflips/semaphores
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 20 Jul 2016 08:21:13 +0000 (09:21 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 20 Jul 2016 08:29:53 +0000 (09:29 +0100)
Since commit a6f766f39751 ("drm/i915: Limit ring synchronisation (sw
sempahores) RPS boosts") and commit bcafc4e38b6a ("drm/i915: Limit mmio
flip RPS boosts") we have limited the waitboosting for semaphores and
flips. Ideally we do not want to boost in either of these instances as no
userspace consumer is waiting upon the results (though a userspace producer
may be stalled trying to submit an execbuf - but in this case the
producer is being throttled due to the engine being saturated with
work). With the introduction of NO_WAITBOOST in the previous patch, we
can finally disable these needless boosts.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1469002875-2335-6-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_pm.c

index 55fd3d9cc44893d77626d78c9b5c4d105a2cdea0..618f8cf210fc52757ffcaf2d6a8c28b7da82b47c 100644 (file)
@@ -2465,13 +2465,7 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
                           list_empty(&file_priv->rps.link) ? "" : ", active");
                rcu_read_unlock();
        }
-       seq_printf(m, "Semaphore boosts: %d%s\n",
-                  dev_priv->rps.semaphores.boosts,
-                  list_empty(&dev_priv->rps.semaphores.link) ? "" : ", active");
-       seq_printf(m, "MMIO flip boosts: %d%s\n",
-                  dev_priv->rps.mmioflips.boosts,
-                  list_empty(&dev_priv->rps.mmioflips.link) ? "" : ", active");
-       seq_printf(m, "Kernel boosts: %d\n", dev_priv->rps.boosts);
+       seq_printf(m, "Kernel (anonymous) boosts: %d\n", dev_priv->rps.boosts);
        spin_unlock(&dev_priv->rps.client_lock);
        mutex_unlock(&dev->filelist_mutex);
 
index c97a75597099e325385b8c2e65facff3ea03c360..e163a94877505fa96e7b4d37de06a8704d0d8bbc 100644 (file)
@@ -1195,8 +1195,6 @@ struct intel_gen6_power_mgmt {
        struct delayed_work autoenable_work;
        unsigned boosts;
 
-       struct intel_rps_client semaphores, mmioflips;
-
        /* manual wa residency calculations */
        struct intel_rps_ei up_ei, down_ei;
 
index 61729d6b4eccf3418f9a532b70d905ac6363f8c4..079e09cee16a28c838c6e61f6753c85b7c4d41b2 100644 (file)
@@ -2849,7 +2849,7 @@ __i915_gem_object_sync(struct drm_i915_gem_object *obj,
                ret = __i915_wait_request(from_req,
                                          i915->mm.interruptible,
                                          NULL,
-                                         &i915->rps.semaphores);
+                                         NO_WAITBOOST);
                if (ret)
                        return ret;
 
index fb7d8fc5b0e69bf574c232461d18f20e25c17548..51fbca756cdb1d5e53556feff33a47c0115ed6ec 100644 (file)
@@ -11473,7 +11473,7 @@ static void intel_mmio_flip_work_func(struct work_struct *w)
        if (work->flip_queued_req)
                WARN_ON(__i915_wait_request(work->flip_queued_req,
                                            false, NULL,
-                                           &dev_priv->rps.mmioflips));
+                                           NO_WAITBOOST));
 
        /* For framebuffer backed by dmabuf, wait for fence */
        resv = i915_gem_object_get_dmabuf_resv(obj);
index fa6b341c27924a507d9fe5626d7500e1c3ee4ce7..a1bf5f8fbb1c25616f5d6f4b33399eaf95f7223d 100644 (file)
@@ -7810,8 +7810,6 @@ void intel_pm_setup(struct drm_device *dev)
        INIT_DELAYED_WORK(&dev_priv->rps.autoenable_work,
                          __intel_autoenable_gt_powersave);
        INIT_LIST_HEAD(&dev_priv->rps.clients);
-       INIT_LIST_HEAD(&dev_priv->rps.semaphores.link);
-       INIT_LIST_HEAD(&dev_priv->rps.mmioflips.link);
 
        dev_priv->pm.suspended = false;
        atomic_set(&dev_priv->pm.wakeref_count, 0);