return 0;
 }
 
+static int count_irq_waiters(struct drm_i915_private *i915)
+{
+       struct intel_engine_cs *ring;
+       int count = 0;
+       int i;
+
+       for_each_ring(ring, i915, i)
+               count += ring->irq_refcount;
+
+       return count;
+}
+
 static int i915_rps_boost_info(struct seq_file *m, void *data)
 {
        struct drm_info_node *node = m->private;
        if (ret)
                goto unlock;
 
+       seq_printf(m, "RPS enabled? %d\n", dev_priv->rps.enabled);
+       seq_printf(m, "GPU busy? %d\n", dev_priv->mm.busy);
+       seq_printf(m, "CPU waiting? %d\n", count_irq_waiters(dev_priv));
+       seq_printf(m, "Frequency requested %d; min hard:%d, soft:%d; max soft:%d, hard:%d\n",
+                  intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq),
+                  intel_gpu_freq(dev_priv, dev_priv->rps.min_freq),
+                  intel_gpu_freq(dev_priv, dev_priv->rps.min_freq_softlimit),
+                  intel_gpu_freq(dev_priv, dev_priv->rps.max_freq_softlimit),
+                  intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
        list_for_each_entry_reverse(file, &dev->filelist, lhead) {
                struct drm_i915_file_private *file_priv = file->driver_priv;
                struct task_struct *task;
 
        return events;
 }
 
+static bool any_waiters(struct drm_i915_private *dev_priv)
+{
+       struct intel_engine_cs *ring;
+       int i;
+
+       for_each_ring(ring, dev_priv, i)
+               if (ring->irq_refcount)
+                       return true;
+
+       return false;
+}
+
 static void gen6_pm_rps_work(struct work_struct *work)
 {
        struct drm_i915_private *dev_priv =
                        new_delay = dev_priv->rps.efficient_freq;
                        adj = 0;
                }
+       } else if (any_waiters(dev_priv)) {
+               adj = 0;
        } else if (pm_iir & GEN6_PM_RP_DOWN_TIMEOUT) {
                if (dev_priv->rps.cur_freq > dev_priv->rps.efficient_freq)
                        new_delay = dev_priv->rps.efficient_freq;