Lines Matching full:pstate

197  * @pstate:		Stores P state limits for this CPU
235 struct pstate_data pstate;
291 u64 (*get_val)(struct cpudata*, int pstate);
532 if (freq == cpu->pstate.turbo_freq)
533 return cpu->pstate.turbo_pstate;
535 if (freq == cpu->pstate.max_freq)
536 return cpu->pstate.max_pstate;
540 return freq / cpu->pstate.scaling;
542 return DIV_ROUND_CLOSEST(freq, cpu->pstate.scaling);
545 return DIV_ROUND_UP(freq, cpu->pstate.scaling);
566 int perf_ctl_max_phys = cpu->pstate.max_pstate_physical;
567 int perf_ctl_scaling = cpu->pstate.perf_ctl_scaling;
569 int scaling = cpu->pstate.scaling;
575 pr_debug("CPU%d: HWP_CAP guaranteed = %d\n", cpu->cpu, cpu->pstate.max_pstate);
576 pr_debug("CPU%d: HWP_CAP highest = %d\n", cpu->cpu, cpu->pstate.turbo_pstate);
579 cpu->pstate.turbo_freq = rounddown(cpu->pstate.turbo_pstate * scaling,
581 cpu->pstate.max_freq = rounddown(cpu->pstate.max_pstate * scaling,
585 cpu->pstate.max_pstate_physical = intel_pstate_freq_to_hwp(cpu, freq);
587 freq = cpu->pstate.min_pstate * perf_ctl_scaling;
588 cpu->pstate.min_freq = freq;
593 cpu->pstate.min_pstate = intel_pstate_freq_to_hwp(cpu, freq);
605 cpu->pstate.max_pstate == cpu->pstate.turbo_pstate);
611 int turbo_pstate = cpu->pstate.turbo_pstate;
614 (cpu->pstate.min_pstate * 100 / turbo_pstate) : 0;
925 freq = ratio * cpu->pstate.scaling;
926 if (cpu->pstate.scaling != cpu->pstate.perf_ctl_scaling)
927 freq = rounddown(freq, cpu->pstate.perf_ctl_scaling);
947 cpu->pstate.max_pstate = HWP_GUARANTEED_PERF(cap);
948 cpu->pstate.turbo_pstate = HWP_HIGHEST_PERF(cap);
953 int scaling = cpu->pstate.scaling;
957 cpu->pstate.max_freq = cpu->pstate.max_pstate * scaling;
958 cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * scaling;
959 if (scaling != cpu->pstate.perf_ctl_scaling) {
960 int perf_ctl_scaling = cpu->pstate.perf_ctl_scaling;
962 cpu->pstate.max_freq = rounddown(cpu->pstate.max_freq,
964 cpu->pstate.turbo_freq = rounddown(cpu->pstate.turbo_freq,
1161 cpudata->pstate.max_freq : cpudata->pstate.turbo_freq;
1250 total = cpu->pstate.turbo_pstate - cpu->pstate.min_pstate + 1;
1251 no_turbo = cpu->pstate.max_pstate - cpu->pstate.min_pstate + 1;
1274 total = cpu->pstate.turbo_pstate - cpu->pstate.min_pstate + 1;
1335 int pct = cpu->pstate.max_pstate * 100 / cpu->pstate.turbo_pstate;
1382 freq = DIV_ROUND_UP(cpu->pstate.turbo_freq * perf_pct, 100);
1790 static u64 atom_get_val(struct cpudata *cpudata, int pstate)
1796 val = (u64)pstate << 8;
1801 int_tofp(pstate - cpudata->pstate.min_pstate),
1807 if (pstate > cpudata->pstate.max_pstate)
1853 int_tofp(cpudata->pstate.max_pstate -
1854 cpudata->pstate.min_pstate));
1957 static u64 core_get_val(struct cpudata *cpudata, int pstate)
1961 val = (u64)pstate << 8;
2017 static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
2019 trace_cpu_frequency(pstate * cpu->pstate.scaling, cpu->cpu);
2020 cpu->pstate.current_pstate = pstate;
2027 pstate_funcs.get_val(cpu, pstate));
2032 intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate);
2037 int pstate = max(cpu->pstate.min_pstate, cpu->max_perf_ratio);
2040 intel_pstate_set_pstate(cpu, pstate);
2048 cpu->pstate.min_pstate = pstate_funcs.get_min(cpu->cpu);
2049 cpu->pstate.max_pstate_physical = perf_ctl_max_phys;
2050 cpu->pstate.perf_ctl_scaling = perf_ctl_scaling;
2056 cpu->pstate.scaling = pstate_funcs.get_cpu_scaling(cpu->cpu);
2057 if (cpu->pstate.scaling != perf_ctl_scaling)
2060 cpu->pstate.scaling = perf_ctl_scaling;
2063 cpu->pstate.scaling = perf_ctl_scaling;
2064 cpu->pstate.max_pstate = pstate_funcs.get_max(cpu->cpu);
2065 cpu->pstate.turbo_pstate = pstate_funcs.get_turbo(cpu->cpu);
2068 if (cpu->pstate.scaling == perf_ctl_scaling) {
2069 cpu->pstate.min_freq = cpu->pstate.min_pstate * perf_ctl_scaling;
2070 cpu->pstate.max_freq = cpu->pstate.max_pstate * perf_ctl_scaling;
2071 cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * perf_ctl_scaling;
2250 return mul_ext_fp(cpu->pstate.max_pstate_physical,
2269 cpu->pstate.max_pstate : cpu->pstate.turbo_pstate;
2272 if (target < cpu->pstate.min_pstate)
2273 target = cpu->pstate.min_pstate;
2289 static int intel_pstate_prepare_request(struct cpudata *cpu, int pstate)
2291 int min_pstate = max(cpu->pstate.min_pstate, cpu->min_perf_ratio);
2294 return clamp_t(int, pstate, min_pstate, max_pstate);
2297 static void intel_pstate_update_pstate(struct cpudata *cpu, int pstate)
2299 if (pstate == cpu->pstate.current_pstate)
2302 cpu->pstate.current_pstate = pstate;
2303 wrmsrl(MSR_IA32_PERF_CTL, pstate_funcs.get_val(cpu, pstate));
2308 int from = cpu->pstate.current_pstate;
2316 trace_cpu_frequency(target_pstate * cpu->pstate.scaling, cpu->cpu);
2323 cpu->pstate.current_pstate,
2532 cpu->pstate.max_freq : cpu->pstate.turbo_freq;
2539 int perf_ctl_scaling = cpu->pstate.perf_ctl_scaling;
2555 if (hwp_active && cpu->pstate.scaling != perf_ctl_scaling) {
2572 int turbo_max = cpu->pstate.turbo_pstate;
2651 cpu->pstate.max_pstate_physical > cpu->pstate.max_pstate &&
2653 policy->max > cpu->pstate.max_freq) {
2668 cpu->pstate.max_freq : cpu->pstate.turbo_freq;
2760 policy->cpuinfo.min_freq = cpu->pstate.min_freq;
2764 cpu->pstate.max_freq : cpu->pstate.turbo_freq;
2852 cpu->pstate.current_pstate,
2899 int old_pstate = cpu->pstate.current_pstate;
2912 cpu->pstate.current_pstate = target_pstate;
2938 freqs.new = target_pstate * cpu->pstate.scaling;
2957 return target_pstate * cpu->pstate.scaling;
2967 int old_pstate = cpu->pstate.current_pstate;
2984 if (min_pstate < cpu->pstate.min_pstate)
2985 min_pstate = cpu->pstate.min_pstate;
3001 cpu->pstate.current_pstate = target_pstate;
3047 freq = DIV_ROUND_UP(cpu->pstate.turbo_freq * global.min_perf_pct, 100);
3056 freq = DIV_ROUND_UP(cpu->pstate.turbo_freq * global.max_perf_pct, 100);
3486 * The Intel pstate driver will be ignored if the platform