fmax, fmin, fstart);
 
        rps->min_freq = fmax;
+       rps->efficient_freq = fstart;
        rps->max_freq = fmin;
-
-       rps->idle_freq = rps->min_freq;
-       rps->cur_freq = rps->idle_freq;
 }
 
 static unsigned long
 
 void intel_rps_unpark(struct intel_rps *rps)
 {
-       u8 freq;
-
        if (!rps->enabled)
                return;
 
 
        WRITE_ONCE(rps->active, true);
 
-       freq = max(rps->cur_freq, rps->efficient_freq),
-       freq = clamp(freq, rps->min_freq_softlimit, rps->max_freq_softlimit);
-       intel_rps_set(rps, freq);
+       intel_rps_set(rps,
+                     clamp(rps->cur_freq,
+                           rps->min_freq_softlimit,
+                           rps->max_freq_softlimit));
 
        rps->last_adj = 0;
 
        /* Finally allow us to boost to max by default */
        rps->boost_freq = rps->max_freq;
        rps->idle_freq = rps->min_freq;
-       rps->cur_freq = rps->idle_freq;
+
+       /* Start in the middle, from here we will autotune based on workload */
+       rps->cur_freq = rps->efficient_freq;
 
        rps->pm_intrmsk_mbz = 0;