Lines Matching +full:8 +full:- +full:cpu

1 // SPDX-License-Identifier: GPL-2.0
3 * Intel Speed Select -- Enumerate and control features
9 int isst_write_pm_config(int cpu, int cp_state) in isst_write_pm_config() argument
19 ret = isst_send_mbox_command(cpu, WRITE_PM_CONFIG, PM_FEATURE, 0, req, in isst_write_pm_config()
24 debug_printf("cpu:%d WRITE_PM_CONFIG resp:%x\n", cpu, resp); in isst_write_pm_config()
29 int isst_read_pm_config(int cpu, int *cp_state, int *cp_cap) in isst_read_pm_config() argument
34 ret = isst_send_mbox_command(cpu, READ_PM_CONFIG, PM_FEATURE, 0, 0, in isst_read_pm_config()
39 debug_printf("cpu:%d READ_PM_CONFIG resp:%x\n", cpu, resp); in isst_read_pm_config()
47 int isst_get_ctdp_levels(int cpu, struct isst_pkg_ctdp *pkg_dev) in isst_get_ctdp_levels() argument
52 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_ctdp_levels()
55 pkg_dev->levels = 0; in isst_get_ctdp_levels()
56 pkg_dev->locked = 1; in isst_get_ctdp_levels()
57 pkg_dev->current_level = 0; in isst_get_ctdp_levels()
58 pkg_dev->version = 0; in isst_get_ctdp_levels()
59 pkg_dev->enabled = 0; in isst_get_ctdp_levels()
63 debug_printf("cpu:%d CONFIG_TDP_GET_LEVELS_INFO resp:%x\n", cpu, resp); in isst_get_ctdp_levels()
65 pkg_dev->version = resp & 0xff; in isst_get_ctdp_levels()
66 pkg_dev->levels = (resp >> 8) & 0xff; in isst_get_ctdp_levels()
67 pkg_dev->current_level = (resp >> 16) & 0xff; in isst_get_ctdp_levels()
68 pkg_dev->locked = !!(resp & BIT(24)); in isst_get_ctdp_levels()
69 pkg_dev->enabled = !!(resp & BIT(31)); in isst_get_ctdp_levels()
74 int isst_get_ctdp_control(int cpu, int config_index, in isst_get_ctdp_control() argument
81 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_ctdp_control()
87 ctdp_level->fact_support = resp & BIT(0); in isst_get_ctdp_control()
88 ctdp_level->pbf_support = !!(resp & BIT(1)); in isst_get_ctdp_control()
89 ctdp_level->fact_enabled = !!(resp & BIT(16)); in isst_get_ctdp_control()
90 ctdp_level->pbf_enabled = !!(resp & BIT(17)); in isst_get_ctdp_control()
92 ret = isst_read_pm_config(cpu, &cp_state, &cp_cap); in isst_get_ctdp_control()
94 debug_printf("cpu:%d pm_config is not supported \n", cpu); in isst_get_ctdp_control()
96 debug_printf("cpu:%d pm_config SST-CP state:%d cap:%d \n", cpu, cp_state, cp_cap); in isst_get_ctdp_control()
97 ctdp_level->sst_cp_support = cp_cap; in isst_get_ctdp_control()
98 ctdp_level->sst_cp_enabled = cp_state; in isst_get_ctdp_control()
102 …"cpu:%d CONFIG_TDP_GET_TDP_CONTROL resp:%x fact_support:%d pbf_support: %d fact_enabled:%d pbf_ena… in isst_get_ctdp_control()
103 cpu, resp, ctdp_level->fact_support, ctdp_level->pbf_support, in isst_get_ctdp_control()
104 ctdp_level->fact_enabled, ctdp_level->pbf_enabled); in isst_get_ctdp_control()
109 int isst_get_tdp_info(int cpu, int config_index, in isst_get_tdp_info() argument
115 ret = isst_send_mbox_command(cpu, CONFIG_TDP, CONFIG_TDP_GET_TDP_INFO, in isst_get_tdp_info()
122 ctdp_level->pkg_tdp = resp & GENMASK(14, 0); in isst_get_tdp_info()
123 ctdp_level->tdp_ratio = (resp & GENMASK(23, 16)) >> 16; in isst_get_tdp_info()
126 "cpu:%d ctdp:%d CONFIG_TDP_GET_TDP_INFO resp:%x tdp_ratio:%d pkg_tdp:%d\n", in isst_get_tdp_info()
127 cpu, config_index, resp, ctdp_level->tdp_ratio, in isst_get_tdp_info()
128 ctdp_level->pkg_tdp); in isst_get_tdp_info()
132 int isst_get_pwr_info(int cpu, int config_index, in isst_get_pwr_info() argument
138 ret = isst_send_mbox_command(cpu, CONFIG_TDP, CONFIG_TDP_GET_PWR_INFO, in isst_get_pwr_info()
143 ctdp_level->pkg_max_power = resp & GENMASK(14, 0); in isst_get_pwr_info()
144 ctdp_level->pkg_min_power = (resp & GENMASK(30, 16)) >> 16; in isst_get_pwr_info()
147 "cpu:%d ctdp:%d CONFIG_TDP_GET_PWR_INFO resp:%x pkg_max_power:%d pkg_min_power:%d\n", in isst_get_pwr_info()
148 cpu, config_index, resp, ctdp_level->pkg_max_power, in isst_get_pwr_info()
149 ctdp_level->pkg_min_power); in isst_get_pwr_info()
154 void isst_get_uncore_p0_p1_info(int cpu, int config_index, in isst_get_uncore_p0_p1_info() argument
159 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_uncore_p0_p1_info()
163 ctdp_level->uncore_p0 = 0; in isst_get_uncore_p0_p1_info()
164 ctdp_level->uncore_p1 = 0; in isst_get_uncore_p0_p1_info()
168 ctdp_level->uncore_p0 = resp & GENMASK(7, 0); in isst_get_uncore_p0_p1_info()
169 ctdp_level->uncore_p1 = (resp & GENMASK(15, 8)) >> 8; in isst_get_uncore_p0_p1_info()
171 "cpu:%d ctdp:%d CONFIG_TDP_GET_UNCORE_P0_P1_INFO resp:%x uncore p0:%d uncore p1:%d\n", in isst_get_uncore_p0_p1_info()
172 cpu, config_index, resp, ctdp_level->uncore_p0, in isst_get_uncore_p0_p1_info()
173 ctdp_level->uncore_p1); in isst_get_uncore_p0_p1_info()
176 void isst_get_p1_info(int cpu, int config_index, in isst_get_p1_info() argument
181 ret = isst_send_mbox_command(cpu, CONFIG_TDP, CONFIG_TDP_GET_P1_INFO, 0, in isst_get_p1_info()
184 ctdp_level->sse_p1 = 0; in isst_get_p1_info()
185 ctdp_level->avx2_p1 = 0; in isst_get_p1_info()
186 ctdp_level->avx512_p1 = 0; in isst_get_p1_info()
190 ctdp_level->sse_p1 = resp & GENMASK(7, 0); in isst_get_p1_info()
191 ctdp_level->avx2_p1 = (resp & GENMASK(15, 8)) >> 8; in isst_get_p1_info()
192 ctdp_level->avx512_p1 = (resp & GENMASK(23, 16)) >> 16; in isst_get_p1_info()
194 "cpu:%d ctdp:%d CONFIG_TDP_GET_P1_INFO resp:%x sse_p1:%d avx2_p1:%d avx512_p1:%d\n", in isst_get_p1_info()
195 cpu, config_index, resp, ctdp_level->sse_p1, in isst_get_p1_info()
196 ctdp_level->avx2_p1, ctdp_level->avx512_p1); in isst_get_p1_info()
199 void isst_get_uncore_mem_freq(int cpu, int config_index, in isst_get_uncore_mem_freq() argument
204 ret = isst_send_mbox_command(cpu, CONFIG_TDP, CONFIG_TDP_GET_MEM_FREQ, in isst_get_uncore_mem_freq()
207 ctdp_level->mem_freq = 0; in isst_get_uncore_mem_freq()
211 ctdp_level->mem_freq = resp & GENMASK(7, 0); in isst_get_uncore_mem_freq()
213 "cpu:%d ctdp:%d CONFIG_TDP_GET_MEM_FREQ resp:%x uncore mem_freq:%d\n", in isst_get_uncore_mem_freq()
214 cpu, config_index, resp, ctdp_level->mem_freq); in isst_get_uncore_mem_freq()
217 int isst_get_tjmax_info(int cpu, int config_index, in isst_get_tjmax_info() argument
223 ret = isst_send_mbox_command(cpu, CONFIG_TDP, CONFIG_TDP_GET_TJMAX_INFO, in isst_get_tjmax_info()
228 ctdp_level->t_proc_hot = resp & GENMASK(7, 0); in isst_get_tjmax_info()
231 "cpu:%d ctdp:%d CONFIG_TDP_GET_TJMAX_INFO resp:%x t_proc_hot:%d\n", in isst_get_tjmax_info()
232 cpu, config_index, resp, ctdp_level->t_proc_hot); in isst_get_tjmax_info()
237 int isst_get_coremask_info(int cpu, int config_index, in isst_get_coremask_info() argument
243 ctdp_level->cpu_count = 0; in isst_get_coremask_info()
248 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_coremask_info()
250 (i << 8) | config_index, &resp); in isst_get_coremask_info()
255 "cpu:%d ctdp:%d mask:%d CONFIG_TDP_GET_CORE_MASK resp:%x\n", in isst_get_coremask_info()
256 cpu, config_index, i, resp); in isst_get_coremask_info()
259 set_cpu_mask_from_punit_coremask(cpu, mask, in isst_get_coremask_info()
260 ctdp_level->core_cpumask_size, in isst_get_coremask_info()
261 ctdp_level->core_cpumask, in isst_get_coremask_info()
263 ctdp_level->cpu_count += cpu_count; in isst_get_coremask_info()
264 debug_printf("cpu:%d ctdp:%d mask:%d cpu count:%d\n", cpu, in isst_get_coremask_info()
265 config_index, i, ctdp_level->cpu_count); in isst_get_coremask_info()
271 int isst_get_get_trl_from_msr(int cpu, int *trl) in isst_get_get_trl_from_msr() argument
276 ret = isst_send_msr_command(cpu, 0x1AD, 0, &msr_trl); in isst_get_get_trl_from_msr()
281 trl[1] = (msr_trl & GENMASK(15, 8)) >> 8; in isst_get_get_trl_from_msr()
292 int isst_get_get_trl(int cpu, int level, int avx_level, int *trl) in isst_get_get_trl() argument
298 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_get_trl()
305 "cpu:%d CONFIG_TDP_GET_TURBO_LIMIT_RATIOS req:%x resp:%x\n", in isst_get_get_trl()
306 cpu, req, resp); in isst_get_get_trl()
309 trl[1] = (resp & GENMASK(15, 8)) >> 8; in isst_get_get_trl()
313 req = level | BIT(8) | (avx_level << 16); in isst_get_get_trl()
314 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_get_trl()
320 debug_printf("cpu:%d CONFIG_TDP_GET_TURBO_LIMIT req:%x resp:%x\n", cpu, in isst_get_get_trl()
324 trl[5] = (resp & GENMASK(15, 8)) >> 8; in isst_get_get_trl()
331 int isst_get_trl_bucket_info(int cpu, unsigned long long *buckets_info) in isst_get_trl_bucket_info() argument
335 debug_printf("cpu:%d bucket info via MSR\n", cpu); in isst_get_trl_bucket_info()
339 ret = isst_send_msr_command(cpu, 0x1ae, 0, buckets_info); in isst_get_trl_bucket_info()
343 debug_printf("cpu:%d bucket info via MSR successful 0x%llx\n", cpu, in isst_get_trl_bucket_info()
349 int isst_set_tdp_level_msr(int cpu, int tdp_level) in isst_set_tdp_level_msr() argument
354 debug_printf("cpu: tdp_level via MSR %d\n", cpu, tdp_level); in isst_set_tdp_level_msr()
356 if (isst_get_config_tdp_lock_status(cpu)) { in isst_set_tdp_level_msr()
358 return -1; in isst_set_tdp_level_msr()
362 return -1; /* invalid value */ in isst_set_tdp_level_msr()
364 ret = isst_send_msr_command(cpu, 0x64b, 1, &level); in isst_set_tdp_level_msr()
368 debug_printf("cpu: tdp_level via MSR successful %d\n", cpu, tdp_level); in isst_set_tdp_level_msr()
373 int isst_set_tdp_level(int cpu, int tdp_level) in isst_set_tdp_level() argument
379 if (isst_get_config_tdp_lock_status(cpu)) { in isst_set_tdp_level()
381 return -1; in isst_set_tdp_level()
385 ret = isst_send_mbox_command(cpu, CONFIG_TDP, CONFIG_TDP_SET_LEVEL, 0, in isst_set_tdp_level()
395 int isst_get_pbf_info(int cpu, int level, struct isst_pbf_info *pbf_info) in isst_get_pbf_info() argument
402 ret = isst_get_ctdp_levels(cpu, &pkg_dev); in isst_get_pbf_info()
410 return -1; in isst_get_pbf_info()
413 ret = isst_get_ctdp_control(cpu, level, &ctdp_level); in isst_get_pbf_info()
418 isst_display_error_info_message(1, "base-freq feature is not present at this level", 1, level); in isst_get_pbf_info()
419 return -1; in isst_get_pbf_info()
422 pbf_info->core_cpumask_size = alloc_cpu_set(&pbf_info->core_cpumask); in isst_get_pbf_info()
424 max_punit_core = get_max_punit_core_id(get_physical_package_id(cpu), get_physical_die_id(cpu)); in isst_get_pbf_info()
431 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_pbf_info()
433 0, (i << 8) | level, &resp); in isst_get_pbf_info()
438 "cpu:%d CONFIG_TDP_PBF_GET_CORE_MASK_INFO resp:%x\n", in isst_get_pbf_info()
439 cpu, resp); in isst_get_pbf_info()
442 set_cpu_mask_from_punit_coremask(cpu, mask, in isst_get_pbf_info()
443 pbf_info->core_cpumask_size, in isst_get_pbf_info()
444 pbf_info->core_cpumask, in isst_get_pbf_info()
449 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_pbf_info()
455 debug_printf("cpu:%d CONFIG_TDP_PBF_GET_P1HI_P1LO_INFO resp:%x\n", cpu, in isst_get_pbf_info()
458 pbf_info->p1_low = resp & 0xff; in isst_get_pbf_info()
459 pbf_info->p1_high = (resp & GENMASK(15, 8)) >> 8; in isst_get_pbf_info()
463 cpu, CONFIG_TDP, CONFIG_TDP_PBF_GET_TDP_INFO, 0, req, &resp); in isst_get_pbf_info()
467 debug_printf("cpu:%d CONFIG_TDP_PBF_GET_TDP_INFO resp:%x\n", cpu, resp); in isst_get_pbf_info()
469 pbf_info->tdp = resp & 0xffff; in isst_get_pbf_info()
473 cpu, CONFIG_TDP, CONFIG_TDP_PBF_GET_TJ_MAX_INFO, 0, req, &resp); in isst_get_pbf_info()
477 debug_printf("cpu:%d CONFIG_TDP_PBF_GET_TJ_MAX_INFO resp:%x\n", cpu, in isst_get_pbf_info()
479 pbf_info->t_control = (resp >> 8) & 0xff; in isst_get_pbf_info()
480 pbf_info->t_prochot = resp & 0xff; in isst_get_pbf_info()
487 free_cpu_set(pbf_info->core_cpumask); in isst_get_pbf_info_complete()
490 int isst_set_pbf_fact_status(int cpu, int pbf, int enable) in isst_set_pbf_fact_status() argument
498 ret = isst_get_ctdp_levels(cpu, &pkg_dev); in isst_set_pbf_fact_status()
500 debug_printf("cpu:%d No support for dynamic ISST\n", cpu); in isst_set_pbf_fact_status()
504 ret = isst_get_ctdp_control(cpu, current_level, &ctdp_level); in isst_set_pbf_fact_status()
519 isst_display_error_info_message(0, "Make sure to execute before: core-power enable", 0, 0); in isst_set_pbf_fact_status()
530 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_set_pbf_fact_status()
535 debug_printf("cpu:%d CONFIG_TDP_SET_TDP_CONTROL pbf/fact:%d req:%x\n", in isst_set_pbf_fact_status()
536 cpu, pbf, req); in isst_set_pbf_fact_status()
541 int isst_get_fact_bucket_info(int cpu, int level, in isst_get_fact_bucket_info() argument
551 cpu, CONFIG_TDP, in isst_get_fact_bucket_info()
553 (i << 8) | level, &resp); in isst_get_fact_bucket_info()
558 "cpu:%d CONFIG_TDP_GET_FACT_HP_TURBO_LIMIT_NUMCORES index:%d level:%d resp:%x\n", in isst_get_fact_bucket_info()
559 cpu, i, level, resp); in isst_get_fact_bucket_info()
563 (resp >> (j * 8)) & 0xff; in isst_get_fact_bucket_info()
572 cpu, CONFIG_TDP, in isst_get_fact_bucket_info()
574 (k << 16) | (i << 8) | level, &resp); in isst_get_fact_bucket_info()
579 "cpu:%d CONFIG_TDP_GET_FACT_HP_TURBO_LIMIT_RATIOS index:%d level:%d avx:%d resp:%x\n", in isst_get_fact_bucket_info()
580 cpu, i, level, k, resp); in isst_get_fact_bucket_info()
586 (resp >> (j * 8)) & 0xff; in isst_get_fact_bucket_info()
590 (resp >> (j * 8)) & 0xff; in isst_get_fact_bucket_info()
594 (resp >> (j * 8)) & 0xff; in isst_get_fact_bucket_info()
606 int isst_get_fact_info(int cpu, int level, int fact_bucket, struct isst_fact_info *fact_info) in isst_get_fact_info() argument
613 ret = isst_get_ctdp_levels(cpu, &pkg_dev); in isst_get_fact_info()
621 return -1; in isst_get_fact_info()
624 ret = isst_get_ctdp_control(cpu, level, &ctdp_level); in isst_get_fact_info()
629 isst_display_error_info_message(1, "turbo-freq feature is not present at this level", 1, level); in isst_get_fact_info()
630 return -1; in isst_get_fact_info()
633 ret = isst_send_mbox_command(cpu, CONFIG_TDP, in isst_get_fact_info()
639 debug_printf("cpu:%d CONFIG_TDP_GET_FACT_LP_CLIPPING_RATIO resp:%x\n", in isst_get_fact_info()
640 cpu, resp); in isst_get_fact_info()
642 fact_info->lp_clipping_ratio_license_sse = resp & 0xff; in isst_get_fact_info()
643 fact_info->lp_clipping_ratio_license_avx2 = (resp >> 8) & 0xff; in isst_get_fact_info()
644 fact_info->lp_clipping_ratio_license_avx512 = (resp >> 16) & 0xff; in isst_get_fact_info()
646 ret = isst_get_fact_bucket_info(cpu, level, fact_info->bucket_info); in isst_get_fact_info()
655 if (!fact_info->bucket_info[j].high_priority_cores_count) in isst_get_fact_info()
662 return -1; in isst_get_fact_info()
668 int isst_set_trl(int cpu, unsigned long long trl) in isst_set_trl() argument
675 ret = isst_send_msr_command(cpu, 0x1AD, 1, &trl); in isst_set_trl()
682 int isst_set_trl_from_current_tdp(int cpu, unsigned long long trl) in isst_set_trl_from_current_tdp() argument
691 int trl[8]; in isst_set_trl_from_current_tdp()
694 ret = isst_get_ctdp_levels(cpu, &pkg_dev); in isst_set_trl_from_current_tdp()
698 ret = isst_get_get_trl(cpu, pkg_dev.current_level, 0, trl); in isst_set_trl_from_current_tdp()
703 for (i = 0; i < 8; ++i) { in isst_set_trl_from_current_tdp()
706 msr_trl |= (_trl << (i * 8)); in isst_set_trl_from_current_tdp()
709 ret = isst_send_msr_command(cpu, 0x1AD, 1, &msr_trl); in isst_set_trl_from_current_tdp()
717 int isst_get_config_tdp_lock_status(int cpu) in isst_get_config_tdp_lock_status() argument
722 ret = isst_send_msr_command(cpu, 0x64b, 0, &tdp_control); in isst_get_config_tdp_lock_status()
731 void isst_get_process_ctdp_complete(int cpu, struct isst_pkg_ctdp *pkg_dev) in isst_get_process_ctdp_complete() argument
735 if (!pkg_dev->processed) in isst_get_process_ctdp_complete()
738 for (i = 0; i < pkg_dev->levels; ++i) { in isst_get_process_ctdp_complete()
741 ctdp_level = &pkg_dev->ctdp_level[i]; in isst_get_process_ctdp_complete()
742 if (ctdp_level->pbf_support) in isst_get_process_ctdp_complete()
743 free_cpu_set(ctdp_level->pbf_info.core_cpumask); in isst_get_process_ctdp_complete()
744 free_cpu_set(ctdp_level->core_cpumask); in isst_get_process_ctdp_complete()
748 int isst_get_process_ctdp(int cpu, int tdp_level, struct isst_pkg_ctdp *pkg_dev) in isst_get_process_ctdp() argument
752 if (pkg_dev->processed) in isst_get_process_ctdp()
755 ret = isst_get_ctdp_levels(cpu, pkg_dev); in isst_get_process_ctdp()
759 debug_printf("cpu: %d ctdp enable:%d current level: %d levels:%d\n", in isst_get_process_ctdp()
760 cpu, pkg_dev->enabled, pkg_dev->current_level, in isst_get_process_ctdp()
761 pkg_dev->levels); in isst_get_process_ctdp()
763 if (tdp_level != 0xff && tdp_level > pkg_dev->levels) { in isst_get_process_ctdp()
765 return -1; in isst_get_process_ctdp()
768 if (!pkg_dev->enabled) in isst_get_process_ctdp()
769 …isst_display_error_info_message(0, "perf-profile feature is not supported, just base-config level … in isst_get_process_ctdp()
771 for (i = 0; i <= pkg_dev->levels; ++i) { in isst_get_process_ctdp()
777 debug_printf("cpu:%d Get Information for TDP level:%d\n", cpu, in isst_get_process_ctdp()
779 ctdp_level = &pkg_dev->ctdp_level[i]; in isst_get_process_ctdp()
781 ctdp_level->level = i; in isst_get_process_ctdp()
782 ctdp_level->control_cpu = cpu; in isst_get_process_ctdp()
783 ctdp_level->pkg_id = get_physical_package_id(cpu); in isst_get_process_ctdp()
784 ctdp_level->die_id = get_physical_die_id(cpu); in isst_get_process_ctdp()
786 ret = isst_get_ctdp_control(cpu, i, ctdp_level); in isst_get_process_ctdp()
791 pkg_dev->processed = 1; in isst_get_process_ctdp()
792 ctdp_level->processed = 1; in isst_get_process_ctdp()
794 if (ctdp_level->pbf_support) { in isst_get_process_ctdp()
795 ret = isst_get_pbf_info(cpu, i, &ctdp_level->pbf_info); in isst_get_process_ctdp()
797 ctdp_level->pbf_found = 1; in isst_get_process_ctdp()
800 if (ctdp_level->fact_support) { in isst_get_process_ctdp()
801 ret = isst_get_fact_info(cpu, i, 0xff, in isst_get_process_ctdp()
802 &ctdp_level->fact_info); in isst_get_process_ctdp()
807 if (!pkg_dev->enabled) { in isst_get_process_ctdp()
810 freq = get_cpufreq_base_freq(cpu); in isst_get_process_ctdp()
812 ctdp_level->sse_p1 = freq / 100000; in isst_get_process_ctdp()
813 ctdp_level->tdp_ratio = ctdp_level->sse_p1; in isst_get_process_ctdp()
816 isst_get_get_trl_from_msr(cpu, ctdp_level->trl_sse_active_cores); in isst_get_process_ctdp()
817 isst_get_trl_bucket_info(cpu, &ctdp_level->buckets_info); in isst_get_process_ctdp()
821 ret = isst_get_tdp_info(cpu, i, ctdp_level); in isst_get_process_ctdp()
825 ret = isst_get_pwr_info(cpu, i, ctdp_level); in isst_get_process_ctdp()
829 ret = isst_get_tjmax_info(cpu, i, ctdp_level); in isst_get_process_ctdp()
833 ctdp_level->core_cpumask_size = in isst_get_process_ctdp()
834 alloc_cpu_set(&ctdp_level->core_cpumask); in isst_get_process_ctdp()
835 ret = isst_get_coremask_info(cpu, i, ctdp_level); in isst_get_process_ctdp()
839 ret = isst_get_trl_bucket_info(cpu, &ctdp_level->buckets_info); in isst_get_process_ctdp()
843 ret = isst_get_get_trl(cpu, i, 0, in isst_get_process_ctdp()
844 ctdp_level->trl_sse_active_cores); in isst_get_process_ctdp()
848 ret = isst_get_get_trl(cpu, i, 1, in isst_get_process_ctdp()
849 ctdp_level->trl_avx_active_cores); in isst_get_process_ctdp()
853 ret = isst_get_get_trl(cpu, i, 2, in isst_get_process_ctdp()
854 ctdp_level->trl_avx_512_active_cores); in isst_get_process_ctdp()
858 isst_get_uncore_p0_p1_info(cpu, i, ctdp_level); in isst_get_process_ctdp()
859 isst_get_p1_info(cpu, i, ctdp_level); in isst_get_process_ctdp()
860 isst_get_uncore_mem_freq(cpu, i, ctdp_level); in isst_get_process_ctdp()
864 …_message(0, "Invalid level, Can't get TDP control information at specified levels on cpu", 1, cpu); in isst_get_process_ctdp()
869 int isst_clos_get_clos_information(int cpu, int *enable, int *type) in isst_clos_get_clos_information() argument
874 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PM_QOS_CONFIG, 0, 0, in isst_clos_get_clos_information()
879 debug_printf("cpu:%d CLOS_PM_QOS_CONFIG resp:%x\n", cpu, resp); in isst_clos_get_clos_information()
894 int isst_pm_qos_config(int cpu, int enable_clos, int priority_type) in isst_pm_qos_config() argument
903 ret = isst_get_ctdp_levels(cpu, &pkg_dev); in isst_pm_qos_config()
909 ret = isst_get_ctdp_control(cpu, pkg_dev.current_level, in isst_pm_qos_config()
915 … isst_display_error_info_message(1, "Ignoring request, turbo-freq feature is still enabled", 0, 0); in isst_pm_qos_config()
916 return -EINVAL; in isst_pm_qos_config()
918 ret = isst_write_pm_config(cpu, 0); in isst_pm_qos_config()
922 ret = isst_write_pm_config(cpu, 1); in isst_pm_qos_config()
927 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PM_QOS_CONFIG, 0, 0, in isst_pm_qos_config()
934 debug_printf("cpu:%d CLOS_PM_QOS_CONFIG resp:%x\n", cpu, resp); in isst_pm_qos_config()
951 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PM_QOS_CONFIG, in isst_pm_qos_config()
956 debug_printf("cpu:%d CLOS_PM_QOS_CONFIG priority type:%d req:%x\n", cpu, in isst_pm_qos_config()
962 int isst_pm_get_clos(int cpu, int clos, struct isst_clos_config *clos_config) in isst_pm_get_clos() argument
967 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PM_CLOS, clos, 0, in isst_pm_get_clos()
972 clos_config->pkg_id = get_physical_package_id(cpu); in isst_pm_get_clos()
973 clos_config->die_id = get_physical_die_id(cpu); in isst_pm_get_clos()
975 clos_config->epp = resp & 0x0f; in isst_pm_get_clos()
976 clos_config->clos_prop_prio = (resp >> 4) & 0x0f; in isst_pm_get_clos()
977 clos_config->clos_min = (resp >> 8) & 0xff; in isst_pm_get_clos()
978 clos_config->clos_max = (resp >> 16) & 0xff; in isst_pm_get_clos()
979 clos_config->clos_desired = (resp >> 24) & 0xff; in isst_pm_get_clos()
984 int isst_set_clos(int cpu, int clos, struct isst_clos_config *clos_config) in isst_set_clos() argument
990 req = clos_config->epp & 0x0f; in isst_set_clos()
991 req |= (clos_config->clos_prop_prio & 0x0f) << 4; in isst_set_clos()
992 req |= (clos_config->clos_min & 0xff) << 8; in isst_set_clos()
993 req |= (clos_config->clos_max & 0xff) << 16; in isst_set_clos()
994 req |= (clos_config->clos_desired & 0xff) << 24; in isst_set_clos()
998 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PM_CLOS, param, req, in isst_set_clos()
1003 debug_printf("cpu:%d CLOS_PM_CLOS param:%x req:%x\n", cpu, param, req); in isst_set_clos()
1008 int isst_clos_get_assoc_status(int cpu, int *clos_id) in isst_clos_get_assoc_status() argument
1014 core_id = find_phy_core_num(cpu); in isst_clos_get_assoc_status()
1017 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PQR_ASSOC, param, 0, in isst_clos_get_assoc_status()
1022 debug_printf("cpu:%d CLOS_PQR_ASSOC param:%x resp:%x\n", cpu, param, in isst_clos_get_assoc_status()
1029 int isst_clos_associate(int cpu, int clos_id) in isst_clos_associate() argument
1036 core_id = find_phy_core_num(cpu); in isst_clos_associate()
1039 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PQR_ASSOC, param, in isst_clos_associate()
1044 debug_printf("cpu:%d CLOS_PQR_ASSOC param:%x req:%x\n", cpu, param, in isst_clos_associate()