adj = 0;
        }
 
-       rps->last_adj = adj;
-
        /*
-        * Limit deboosting and boosting to keep ourselves at the extremes
-        * when in the respective power modes (i.e. slowly decrease frequencies
-        * while in the HIGH_POWER zone and slowly increase frequencies while
-        * in the LOW_POWER zone). On idle, we will hit the timeout and drop
-        * to the next level quickly, and conversely if busy we expect to
-        * hit a waitboost and rapidly switch into max power.
-        */
-       if ((adj < 0 && rps->power.mode == HIGH_POWER) ||
-           (adj > 0 && rps->power.mode == LOW_POWER))
-               rps->last_adj = 0;
-
-       /* sysfs frequency interfaces may have snuck in while servicing the
-        * interrupt
+        * sysfs frequency limits may have snuck in while
+        * servicing the interrupt
         */
        new_freq += adj;
        new_freq = clamp_t(int, new_freq, min, max);
 
        if (intel_rps_set(rps, new_freq)) {
                drm_dbg(&i915->drm, "Failed to set new GPU frequency\n");
-               rps->last_adj = 0;
+               adj = 0;
        }
+       rps->last_adj = adj;
 
        mutex_unlock(&rps->lock);