unsigned long max_util, unsigned long sum_util,
                                unsigned long allowed_cpu_cap)
 {
-       unsigned long freq, scale_cpu;
+       unsigned long freq, ref_freq, scale_cpu;
        struct em_perf_state *ps;
        int cpu;
 
         */
        cpu = cpumask_first(to_cpumask(pd->cpus));
        scale_cpu = arch_scale_cpu_capacity(cpu);
-       ps = &pd->table[pd->nr_perf_states - 1];
+       ref_freq = arch_scale_freq_ref(cpu);
 
        max_util = min(max_util, allowed_cpu_cap);
-       freq = map_util_freq(max_util, ps->frequency, scale_cpu);
+       freq = map_util_freq(max_util, ref_freq, scale_cpu);
 
        /*
         * Find the lowest performance state of the Energy Model above the