Lines Matching refs:pi

70 set_freq_internal(struct cppc_power_info *pi, uint32_t idx)  in set_freq_internal()  argument
72 if (idx >= RTE_MAX_LCORE_FREQS || idx >= pi->nb_freqs) { in set_freq_internal()
74 "should be less than %u\n", idx, pi->nb_freqs); in set_freq_internal()
79 if (idx == pi->curr_idx) in set_freq_internal()
83 idx, pi->freqs[idx], pi->lcore_id); in set_freq_internal()
84 if (fseek(pi->f, 0, SEEK_SET) < 0) { in set_freq_internal()
86 "for setting frequency for lcore %u\n", pi->lcore_id); in set_freq_internal()
89 if (fprintf(pi->f, "%u", pi->freqs[idx]) < 0) { in set_freq_internal()
91 "lcore %u\n", pi->lcore_id); in set_freq_internal()
94 fflush(pi->f); in set_freq_internal()
95 pi->curr_idx = idx; in set_freq_internal()
106 power_set_governor_userspace(struct cppc_power_info *pi) in power_set_governor_userspace() argument
108 return power_set_governor(pi->lcore_id, POWER_GOVERNOR_USERSPACE, in power_set_governor_userspace()
109 pi->governor_ori, sizeof(pi->governor_ori)); in power_set_governor_userspace()
113 power_check_turbo(struct cppc_power_info *pi) in power_check_turbo() argument
120 pi->lcore_id); in power_check_turbo()
128 pi->lcore_id); in power_check_turbo()
136 pi->lcore_id); in power_check_turbo()
164 pi->highest_perf = highest_perf; in power_check_turbo()
165 pi->nominal_perf = nominal_perf; in power_check_turbo()
169 pi->turbo_available = 1; in power_check_turbo()
170 pi->turbo_enable = 1; in power_check_turbo()
174 pi->lcore_id, highest_perf, nominal_perf); in power_check_turbo()
176 pi->turbo_available = 0; in power_check_turbo()
177 pi->turbo_enable = 0; in power_check_turbo()
180 pi->lcore_id, highest_perf, nominal_perf); in power_check_turbo()
199 power_get_available_freqs(struct cppc_power_info *pi) in power_get_available_freqs() argument
207 pi->lcore_id); in power_get_available_freqs()
215 pi->lcore_id); in power_get_available_freqs()
236 power_check_turbo(pi); in power_get_available_freqs()
244 nominal_perf = (pi->nominal_perf < UNIT_DIFF) ? in power_get_available_freqs()
245 pi->nominal_perf * UNIT_DIFF : pi->nominal_perf; in power_get_available_freqs()
247 pi->turbo_available; in power_get_available_freqs()
255 for (i = 0, pi->nb_freqs = 0; i < num_freqs; i++) { in power_get_available_freqs()
256 if ((i == 0) && pi->turbo_available) in power_get_available_freqs()
257 pi->freqs[pi->nb_freqs++] = scaling_max_freq; in power_get_available_freqs()
259 pi->freqs[pi->nb_freqs++] = in power_get_available_freqs()
260 nominal_perf - (i - pi->turbo_available) * BUS_FREQ; in power_get_available_freqs()
266 num_freqs, pi->lcore_id); in power_get_available_freqs()
281 power_init_for_setting_freq(struct cppc_power_info *pi) in power_init_for_setting_freq() argument
288 open_core_sysfs_file(&f, "rw+", POWER_SYSFILE_SETSPEED, pi->lcore_id); in power_init_for_setting_freq()
313 for (i = 0; i < pi->nb_freqs; i++) { in power_init_for_setting_freq()
314 if (freq_conv == pi->freqs[i]) { in power_init_for_setting_freq()
315 pi->curr_idx = i; in power_init_for_setting_freq()
316 pi->f = f; in power_init_for_setting_freq()
337 struct cppc_power_info *pi; in power_cppc_cpufreq_init() local
346 pi = &lcore_power_info[lcore_id]; in power_cppc_cpufreq_init()
354 if (!__atomic_compare_exchange_n(&(pi->state), &exp_state, in power_cppc_cpufreq_init()
362 pi->lcore_id = lcore_id; in power_cppc_cpufreq_init()
364 if (power_set_governor_userspace(pi) < 0) { in power_cppc_cpufreq_init()
371 if (power_get_available_freqs(pi) < 0) { in power_cppc_cpufreq_init()
378 if (power_init_for_setting_freq(pi) < 0) { in power_cppc_cpufreq_init()
394 __atomic_store_n(&(pi->state), POWER_USED, __ATOMIC_RELEASE); in power_cppc_cpufreq_init()
399 __atomic_store_n(&(pi->state), POWER_UNKNOWN, __ATOMIC_RELEASE); in power_cppc_cpufreq_init()
408 power_set_governor_original(struct cppc_power_info *pi) in power_set_governor_original() argument
410 return power_set_governor(pi->lcore_id, pi->governor_ori, NULL, 0); in power_set_governor_original()
416 struct cppc_power_info *pi; in power_cppc_cpufreq_exit() local
424 pi = &lcore_power_info[lcore_id]; in power_cppc_cpufreq_exit()
432 if (!__atomic_compare_exchange_n(&(pi->state), &exp_state, in power_cppc_cpufreq_exit()
441 fclose(pi->f); in power_cppc_cpufreq_exit()
442 pi->f = NULL; in power_cppc_cpufreq_exit()
445 if (power_set_governor_original(pi) < 0) { in power_cppc_cpufreq_exit()
454 __atomic_store_n(&(pi->state), POWER_IDLE, __ATOMIC_RELEASE); in power_cppc_cpufreq_exit()
459 __atomic_store_n(&(pi->state), POWER_UNKNOWN, __ATOMIC_RELEASE); in power_cppc_cpufreq_exit()
467 struct cppc_power_info *pi; in power_cppc_cpufreq_freqs() local
479 pi = &lcore_power_info[lcore_id]; in power_cppc_cpufreq_freqs()
480 if (num < pi->nb_freqs) { in power_cppc_cpufreq_freqs()
484 rte_memcpy(freqs, pi->freqs, pi->nb_freqs * sizeof(uint32_t)); in power_cppc_cpufreq_freqs()
486 return pi->nb_freqs; in power_cppc_cpufreq_freqs()
514 struct cppc_power_info *pi; in power_cppc_cpufreq_freq_down() local
521 pi = &lcore_power_info[lcore_id]; in power_cppc_cpufreq_freq_down()
522 if (pi->curr_idx + 1 == pi->nb_freqs) in power_cppc_cpufreq_freq_down()
526 return set_freq_internal(pi, pi->curr_idx + 1); in power_cppc_cpufreq_freq_down()
532 struct cppc_power_info *pi; in power_cppc_cpufreq_freq_up() local
539 pi = &lcore_power_info[lcore_id]; in power_cppc_cpufreq_freq_up()
540 if (pi->curr_idx == 0 || (pi->curr_idx == 1 && in power_cppc_cpufreq_freq_up()
541 pi->turbo_available && !pi->turbo_enable)) in power_cppc_cpufreq_freq_up()
545 return set_freq_internal(pi, pi->curr_idx - 1); in power_cppc_cpufreq_freq_up()
573 struct cppc_power_info *pi; in power_cppc_cpufreq_freq_min() local
580 pi = &lcore_power_info[lcore_id]; in power_cppc_cpufreq_freq_min()
583 return set_freq_internal(pi, pi->nb_freqs - 1); in power_cppc_cpufreq_freq_min()
589 struct cppc_power_info *pi; in power_cppc_turbo_status() local
596 pi = &lcore_power_info[lcore_id]; in power_cppc_turbo_status()
598 return pi->turbo_enable; in power_cppc_turbo_status()
604 struct cppc_power_info *pi; in power_cppc_enable_turbo() local
611 pi = &lcore_power_info[lcore_id]; in power_cppc_enable_turbo()
613 if (pi->turbo_available) in power_cppc_enable_turbo()
614 pi->turbo_enable = 1; in power_cppc_enable_turbo()
616 pi->turbo_enable = 0; in power_cppc_enable_turbo()
640 struct cppc_power_info *pi; in power_cppc_disable_turbo() local
647 pi = &lcore_power_info[lcore_id]; in power_cppc_disable_turbo()
649 pi->turbo_enable = 0; in power_cppc_disable_turbo()
651 if ((pi->turbo_available) && (pi->curr_idx <= 1)) { in power_cppc_disable_turbo()
668 struct cppc_power_info *pi; in power_cppc_get_capabilities() local
679 pi = &lcore_power_info[lcore_id]; in power_cppc_get_capabilities()
681 caps->turbo = !!(pi->turbo_available); in power_cppc_get_capabilities()