Lines Matching +full:level +full:- +full:2

1 // SPDX-License-Identifier: GPL-2.0
3 * Intel dynamic_speed_select -- Enumerate and control features
26 str_len - curr_index, ","); in printcpulist()
31 index = snprintf(&str[curr_index], str_len - curr_index, "%d", in printcpulist()
67 for (i = size - 1; i >= 0; --i) { in printcpumask()
68 index = snprintf(&str[curr_index], str_len - curr_index, "%08x", in printcpumask()
74 strncat(&str[curr_index], ",", str_len - curr_index); in printcpumask()
84 static void format_and_print_txt(FILE *outf, int level, char *header, in format_and_print_txt() argument
91 if (!level) in format_and_print_txt()
94 if (level == 1) { in format_and_print_txt()
97 for (i = 0; i < level - 1; ++i) in format_and_print_txt()
98 j += snprintf(&delimiters[j], sizeof(delimiters) - j, in format_and_print_txt()
112 static void format_and_print(FILE *outf, int level, char *header, char *value) in format_and_print() argument
119 format_and_print_txt(outf, level, header, value); in format_and_print()
123 if (level == 0) { in format_and_print()
132 for (i = 0; i < level; ++i) in format_and_print()
133 j += snprintf(&delimiters[j], sizeof(delimiters) - j, in format_and_print()
136 if (last_level == level) in format_and_print()
140 if (last_level != level) in format_and_print()
146 for (i = last_level - 1; i >= level; --i) { in format_and_print()
149 for (j = i; j > 0; --j) in format_and_print()
151 sizeof(delimiters) - k, in format_and_print()
153 if (i == level && header) in format_and_print()
158 if (abs(last_level - level) < 3) in format_and_print()
166 last_level = level; in format_and_print()
172 int level = 1; in print_package_info() local
176 if (id->die < 0 && id->cpu < 0) in print_package_info()
178 "package-%d:die-IO:powerdomain-%d:cpu-None", in print_package_info()
179 id->pkg, id->punit); in print_package_info()
180 else if (id->cpu < 0) in print_package_info()
182 "package-%d:die-%d:powerdomain-%d:cpu-None", in print_package_info()
183 id->pkg, id->die, id->punit); in print_package_info()
186 "package-%d:die-%d:powerdomain-%d:cpu-%d", in print_package_info()
187 id->pkg, id->die, id->punit, id->cpu); in print_package_info()
189 snprintf(header, sizeof(header), "package-%d:die-%d:cpu-%d", in print_package_info()
190 id->pkg, id->die, id->cpu); in print_package_info()
192 format_and_print(outf, level, header, NULL); in print_package_info()
195 snprintf(header, sizeof(header), "package-%d", id->pkg); in print_package_info()
196 format_and_print(outf, level++, header, NULL); in print_package_info()
197 if (id->die < 0) in print_package_info()
198 snprintf(header, sizeof(header), "die-IO"); in print_package_info()
200 snprintf(header, sizeof(header), "die-%d", id->die); in print_package_info()
201 format_and_print(outf, level++, header, NULL); in print_package_info()
203 snprintf(header, sizeof(header), "powerdomain-%d", id->punit); in print_package_info()
204 format_and_print(outf, level++, header, NULL); in print_package_info()
207 if (id->cpu < 0) in print_package_info()
208 snprintf(header, sizeof(header), "cpu-None"); in print_package_info()
210 snprintf(header, sizeof(header), "cpu-%d", id->cpu); in print_package_info()
212 format_and_print(outf, level, header, NULL); in print_package_info()
214 return level; in print_package_info()
217 static void _isst_pbf_display_information(struct isst_id *id, FILE *outf, int level, in _isst_pbf_display_information() argument
224 snprintf(header, sizeof(header), "speed-select-base-freq-properties"); in _isst_pbf_display_information()
227 snprintf(header, sizeof(header), "high-priority-base-frequency(MHz)"); in _isst_pbf_display_information()
229 pbf_info->p1_high * isst_get_disp_freq_multiplier()); in _isst_pbf_display_information()
232 snprintf(header, sizeof(header), "high-priority-cpu-mask"); in _isst_pbf_display_information()
233 printcpumask(sizeof(value), value, pbf_info->core_cpumask_size, in _isst_pbf_display_information()
234 pbf_info->core_cpumask); in _isst_pbf_display_information()
237 snprintf(header, sizeof(header), "high-priority-cpu-list"); in _isst_pbf_display_information()
239 pbf_info->core_cpumask_size, in _isst_pbf_display_information()
240 pbf_info->core_cpumask); in _isst_pbf_display_information()
243 snprintf(header, sizeof(header), "low-priority-base-frequency(MHz)"); in _isst_pbf_display_information()
245 pbf_info->p1_low * isst_get_disp_freq_multiplier()); in _isst_pbf_display_information()
251 snprintf(header, sizeof(header), "tjunction-temperature(C)"); in _isst_pbf_display_information()
252 snprintf(value, sizeof(value), "%d", pbf_info->t_prochot); in _isst_pbf_display_information()
255 snprintf(header, sizeof(header), "thermal-design-power(W)"); in _isst_pbf_display_information()
256 snprintf(value, sizeof(value), "%d", pbf_info->tdp); in _isst_pbf_display_information()
260 static void _isst_fact_display_information(struct isst_id *id, FILE *outf, int level, in _isst_fact_display_information() argument
265 struct isst_fact_bucket_info *bucket_info = fact_info->bucket_info; in _isst_fact_display_information()
276 if (!bucket_info[j].hp_cores && id->cpu >= 0) in _isst_fact_display_information()
286 snprintf(header, sizeof(header), "speed-select-turbo-freq-properties"); in _isst_fact_display_information()
297 snprintf(header, sizeof(header), "bucket-%d", j); in _isst_fact_display_information()
300 snprintf(header, sizeof(header), "high-priority-cores-count"); in _isst_fact_display_information()
303 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
309 "high-priority-max-frequency(MHz)"); in _isst_fact_display_information()
312 "high-priority-max-%s-frequency(MHz)", isst_get_trl_level_name(i)); in _isst_fact_display_information()
315 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
319 "speed-select-turbo-freq-clip-frequencies"); in _isst_fact_display_information()
323 if (!fact_info->lp_ratios[j]) in _isst_fact_display_information()
326 /* No AVX level name for SSE to be consistent with previous formatting */ in _isst_fact_display_information()
328 snprintf(header, sizeof(header), "low-priority-max-frequency(MHz)"); in _isst_fact_display_information()
330 snprintf(header, sizeof(header), "low-priority-max-%s-frequency(MHz)", in _isst_fact_display_information()
333 fact_info->lp_ratios[j] * isst_get_disp_freq_multiplier()); in _isst_fact_display_information()
334 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
342 int level = print_package_info(id, outf); in isst_ctdp_display_core_info() local
344 level++; in isst_ctdp_display_core_info()
352 format_and_print(outf, level, prefix, value); in isst_ctdp_display_core_info()
362 static int level; in isst_ctdp_display_information() local
366 if (pkg_dev->processed) in isst_ctdp_display_information()
367 level = print_package_info(id, outf); in isst_ctdp_display_information()
369 for (i = 0; i <= pkg_dev->levels; ++i) { in isst_ctdp_display_information()
373 ctdp_level = &pkg_dev->ctdp_level[i]; in isst_ctdp_display_information()
374 if (!ctdp_level->processed) in isst_ctdp_display_information()
377 snprintf(header, sizeof(header), "perf-profile-level-%d", in isst_ctdp_display_information()
378 ctdp_level->level); in isst_ctdp_display_information()
379 format_and_print(outf, level + 1, header, NULL); in isst_ctdp_display_information()
381 if (id->cpu >= 0) { in isst_ctdp_display_information()
382 snprintf(header, sizeof(header), "cpu-count"); in isst_ctdp_display_information()
385 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
387 j = CPU_COUNT_S(ctdp_level->core_cpumask_size, in isst_ctdp_display_information()
388 ctdp_level->core_cpumask); in isst_ctdp_display_information()
390 snprintf(header, sizeof(header), "enable-cpu-count"); in isst_ctdp_display_information()
392 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
395 if (ctdp_level->core_cpumask_size) { in isst_ctdp_display_information()
396 snprintf(header, sizeof(header), "enable-cpu-mask"); in isst_ctdp_display_information()
398 ctdp_level->core_cpumask_size, in isst_ctdp_display_information()
399 ctdp_level->core_cpumask); in isst_ctdp_display_information()
400 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
402 snprintf(header, sizeof(header), "enable-cpu-list"); in isst_ctdp_display_information()
404 ctdp_level->core_cpumask_size, in isst_ctdp_display_information()
405 ctdp_level->core_cpumask); in isst_ctdp_display_information()
406 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
410 snprintf(header, sizeof(header), "thermal-design-power-ratio"); in isst_ctdp_display_information()
411 snprintf(value, sizeof(value), "%d", ctdp_level->tdp_ratio); in isst_ctdp_display_information()
412 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
414 snprintf(header, sizeof(header), "base-frequency(MHz)"); in isst_ctdp_display_information()
415 if (!ctdp_level->sse_p1) in isst_ctdp_display_information()
416 ctdp_level->sse_p1 = ctdp_level->tdp_ratio; in isst_ctdp_display_information()
418 ctdp_level->sse_p1 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
419 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
421 if (ctdp_level->avx2_p1) { in isst_ctdp_display_information()
422 snprintf(header, sizeof(header), "base-frequency-avx2(MHz)"); in isst_ctdp_display_information()
424 ctdp_level->avx2_p1 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
425 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
428 if (ctdp_level->avx512_p1) { in isst_ctdp_display_information()
429 snprintf(header, sizeof(header), "base-frequency-avx512(MHz)"); in isst_ctdp_display_information()
431 ctdp_level->avx512_p1 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
432 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
435 if (ctdp_level->uncore_pm) { in isst_ctdp_display_information()
436 snprintf(header, sizeof(header), "uncore-frequency-min(MHz)"); in isst_ctdp_display_information()
438 ctdp_level->uncore_pm * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
439 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
442 if (ctdp_level->uncore_p0) { in isst_ctdp_display_information()
443 snprintf(header, sizeof(header), "uncore-frequency-max(MHz)"); in isst_ctdp_display_information()
445 ctdp_level->uncore_p0 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
446 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
449 if (ctdp_level->amx_p1) { in isst_ctdp_display_information()
450 snprintf(header, sizeof(header), "base-frequency-amx(MHz)"); in isst_ctdp_display_information()
452 ctdp_level->amx_p1 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
453 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
456 if (ctdp_level->uncore_p1) { in isst_ctdp_display_information()
457 snprintf(header, sizeof(header), "uncore-frequency-base(MHz)"); in isst_ctdp_display_information()
459 ctdp_level->uncore_p1 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
460 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
463 if (ctdp_level->uncore1_p1) { in isst_ctdp_display_information()
464 snprintf(header, sizeof(header), "uncore-1-frequency-base(MHz)"); in isst_ctdp_display_information()
466 ctdp_level->uncore1_p1 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
467 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
469 if (ctdp_level->uncore1_pm) { in isst_ctdp_display_information()
470 snprintf(header, sizeof(header), "uncore-1-frequency-min(MHz)"); in isst_ctdp_display_information()
472 ctdp_level->uncore1_pm * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
473 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
476 if (ctdp_level->uncore1_p0) { in isst_ctdp_display_information()
477 snprintf(header, sizeof(header), "uncore-1-frequency-max(MHz)"); in isst_ctdp_display_information()
479 ctdp_level->uncore1_p0 * isst_get_disp_freq_multiplier()); in isst_ctdp_display_information()
480 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
483 if (ctdp_level->mem_freq) { in isst_ctdp_display_information()
484 snprintf(header, sizeof(header), "max-mem-frequency(MHz)"); in isst_ctdp_display_information()
486 ctdp_level->mem_freq); in isst_ctdp_display_information()
487 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
493 ctdp_level->cooling_type); in isst_ctdp_display_information()
494 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
498 "speed-select-turbo-freq"); in isst_ctdp_display_information()
499 if (ctdp_level->fact_support) { in isst_ctdp_display_information()
500 if (ctdp_level->fact_enabled) in isst_ctdp_display_information()
506 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
509 "speed-select-base-freq"); in isst_ctdp_display_information()
510 if (ctdp_level->pbf_support) { in isst_ctdp_display_information()
511 if (ctdp_level->pbf_enabled) in isst_ctdp_display_information()
517 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
520 "speed-select-core-power"); in isst_ctdp_display_information()
521 if (ctdp_level->sst_cp_support) { in isst_ctdp_display_information()
522 if (ctdp_level->sst_cp_enabled) in isst_ctdp_display_information()
528 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
531 if (ctdp_level->pbf_support) in isst_ctdp_display_information()
534 &ctdp_level->pbf_info, in isst_ctdp_display_information()
535 level + 2); in isst_ctdp_display_information()
539 if (ctdp_level->pkg_tdp) { in isst_ctdp_display_information()
540 snprintf(header, sizeof(header), "thermal-design-power(W)"); in isst_ctdp_display_information()
541 snprintf(value, sizeof(value), "%d", ctdp_level->pkg_tdp); in isst_ctdp_display_information()
542 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
545 if (ctdp_level->t_proc_hot) { in isst_ctdp_display_information()
546 snprintf(header, sizeof(header), "tjunction-max(C)"); in isst_ctdp_display_information()
547 snprintf(value, sizeof(value), "%d", ctdp_level->t_proc_hot); in isst_ctdp_display_information()
548 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
552 if (!ctdp_level->trl_ratios[k][0]) in isst_ctdp_display_information()
555 snprintf(header, sizeof(header), "turbo-ratio-limits-%s", isst_get_trl_level_name(k)); in isst_ctdp_display_information()
556 format_and_print(outf, level + 2, header, NULL); in isst_ctdp_display_information()
559 snprintf(header, sizeof(header), "bucket-%d", j); in isst_ctdp_display_information()
560 format_and_print(outf, level + 3, header, NULL); in isst_ctdp_display_information()
562 snprintf(header, sizeof(header), "core-count"); in isst_ctdp_display_information()
564 snprintf(value, sizeof(value), "%llu", (ctdp_level->trl_cores >> (j * 8)) & 0xff); in isst_ctdp_display_information()
565 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
567 snprintf(header, sizeof(header), "max-turbo-frequency(MHz)"); in isst_ctdp_display_information()
568 …snprintf(value, sizeof(value), "%d", ctdp_level->trl_ratios[k][j] * isst_get_disp_freq_multiplier(… in isst_ctdp_display_information()
569 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
573 if (ctdp_level->pbf_support) in isst_ctdp_display_information()
575 &ctdp_level->pbf_info, in isst_ctdp_display_information()
576 level + 2); in isst_ctdp_display_information()
577 if (ctdp_level->fact_support) in isst_ctdp_display_information()
579 &ctdp_level->fact_info, in isst_ctdp_display_information()
580 level + 2); in isst_ctdp_display_information()
600 void isst_pbf_display_information(struct isst_id *id, FILE *outf, int level, in isst_pbf_display_information() argument
606 _isst_pbf_display_information(id, outf, level, pbf_info, _level + 1); in isst_pbf_display_information()
610 void isst_fact_display_information(struct isst_id *id, FILE *outf, int level, in isst_fact_display_information() argument
617 _isst_fact_display_information(id, outf, level, fact_bucket, fact_avx, in isst_fact_display_information()
627 int level; in isst_clos_display_information() local
629 level = print_package_info(id, outf); in isst_clos_display_information()
631 snprintf(header, sizeof(header), "core-power"); in isst_clos_display_information()
632 format_and_print(outf, level + 1, header, NULL); in isst_clos_display_information()
636 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
639 snprintf(value, sizeof(value), "%d", clos_config->epp); in isst_clos_display_information()
640 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
642 snprintf(header, sizeof(header), "clos-proportional-priority"); in isst_clos_display_information()
643 snprintf(value, sizeof(value), "%d", clos_config->clos_prop_prio); in isst_clos_display_information()
644 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
646 snprintf(header, sizeof(header), "clos-min"); in isst_clos_display_information()
647 snprintf(value, sizeof(value), "%d MHz", clos_config->clos_min * isst_get_disp_freq_multiplier()); in isst_clos_display_information()
648 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
650 snprintf(header, sizeof(header), "clos-max"); in isst_clos_display_information()
651 if ((clos_config->clos_max * isst_get_disp_freq_multiplier()) == 25500) in isst_clos_display_information()
654 snprintf(value, sizeof(value), "%d MHz", clos_config->clos_max * isst_get_disp_freq_multiplier()); in isst_clos_display_information()
655 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
657 snprintf(header, sizeof(header), "clos-desired"); in isst_clos_display_information()
658 …snprintf(value, sizeof(value), "%d MHz", clos_config->clos_desired * isst_get_disp_freq_multiplier… in isst_clos_display_information()
659 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
661 format_and_print(outf, level, NULL, NULL); in isst_clos_display_information()
670 int level; in isst_clos_display_clos_information() local
672 level = print_package_info(id, outf); in isst_clos_display_clos_information()
674 snprintf(header, sizeof(header), "core-power"); in isst_clos_display_clos_information()
675 format_and_print(outf, level + 1, header, NULL); in isst_clos_display_clos_information()
677 snprintf(header, sizeof(header), "support-status"); in isst_clos_display_clos_information()
682 format_and_print(outf, level + 2, header, value); in isst_clos_display_clos_information()
684 snprintf(header, sizeof(header), "enable-status"); in isst_clos_display_clos_information()
689 format_and_print(outf, level + 2, header, value); in isst_clos_display_clos_information()
691 snprintf(header, sizeof(header), "clos-enable-status"); in isst_clos_display_clos_information()
696 format_and_print(outf, level + 2, header, value); in isst_clos_display_clos_information()
698 snprintf(header, sizeof(header), "priority-type"); in isst_clos_display_clos_information()
703 format_and_print(outf, level + 2, header, value); in isst_clos_display_clos_information()
705 format_and_print(outf, level, NULL, NULL); in isst_clos_display_clos_information()
712 int level; in isst_clos_display_assoc_information() local
714 level = print_package_info(id, outf); in isst_clos_display_assoc_information()
716 snprintf(header, sizeof(header), "get-assoc"); in isst_clos_display_assoc_information()
717 format_and_print(outf, level + 1, header, NULL); in isst_clos_display_assoc_information()
721 format_and_print(outf, level + 2, header, value); in isst_clos_display_assoc_information()
723 format_and_print(outf, level, NULL, NULL); in isst_clos_display_assoc_information()
731 int level = 3; in isst_display_result() local
733 level = print_package_info(id, outf); in isst_display_result()
736 format_and_print(outf, level + 1, header, NULL); in isst_display_result()
742 format_and_print(outf, level + 2, header, value); in isst_display_result()
744 format_and_print(outf, level, NULL, NULL); in isst_display_result()
782 format_and_print(outf, 2, header, value); in isst_display_error_info_message()
792 int level; in isst_trl_display_information() local
794 level = print_package_info(id, outf); in isst_trl_display_information()
796 snprintf(header, sizeof(header), "get-trl"); in isst_trl_display_information()
797 format_and_print(outf, level + 1, header, NULL); in isst_trl_display_information()
801 format_and_print(outf, level + 2, header, value); in isst_trl_display_information()
803 format_and_print(outf, level, NULL, NULL); in isst_trl_display_information()