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()
174 snprintf(header, sizeof(header), "package-%d:die-%d:cpu-%d", in print_package_info()
180 snprintf(header, sizeof(header), "package-%d", in print_package_info()
183 snprintf(header, sizeof(header), "die-%d", get_physical_die_id(cpu)); in print_package_info()
184 format_and_print(outf, 2, header, NULL); in print_package_info()
185 snprintf(header, sizeof(header), "cpu-%d", cpu); in print_package_info()
191 static void _isst_pbf_display_information(int cpu, FILE *outf, int level, in _isst_pbf_display_information() argument
198 snprintf(header, sizeof(header), "speed-select-base-freq-properties"); in _isst_pbf_display_information()
201 snprintf(header, sizeof(header), "high-priority-base-frequency(MHz)"); in _isst_pbf_display_information()
203 pbf_info->p1_high * DISP_FREQ_MULTIPLIER); in _isst_pbf_display_information()
206 snprintf(header, sizeof(header), "high-priority-cpu-mask"); in _isst_pbf_display_information()
207 printcpumask(sizeof(value), value, pbf_info->core_cpumask_size, in _isst_pbf_display_information()
208 pbf_info->core_cpumask); in _isst_pbf_display_information()
211 snprintf(header, sizeof(header), "high-priority-cpu-list"); in _isst_pbf_display_information()
213 pbf_info->core_cpumask_size, in _isst_pbf_display_information()
214 pbf_info->core_cpumask); in _isst_pbf_display_information()
217 snprintf(header, sizeof(header), "low-priority-base-frequency(MHz)"); in _isst_pbf_display_information()
219 pbf_info->p1_low * DISP_FREQ_MULTIPLIER); in _isst_pbf_display_information()
225 snprintf(header, sizeof(header), "tjunction-temperature(C)"); in _isst_pbf_display_information()
226 snprintf(value, sizeof(value), "%d", pbf_info->t_prochot); in _isst_pbf_display_information()
229 snprintf(header, sizeof(header), "thermal-design-power(W)"); in _isst_pbf_display_information()
230 snprintf(value, sizeof(value), "%d", pbf_info->tdp); in _isst_pbf_display_information()
234 static void _isst_fact_display_information(int cpu, FILE *outf, int level, in _isst_fact_display_information() argument
239 struct isst_fact_bucket_info *bucket_info = fact_info->bucket_info; in _isst_fact_display_information()
258 snprintf(header, sizeof(header), "speed-select-turbo-freq-properties"); in _isst_fact_display_information()
267 snprintf(header, sizeof(header), "bucket-%d", j); in _isst_fact_display_information()
270 snprintf(header, sizeof(header), "high-priority-cores-count"); in _isst_fact_display_information()
273 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
277 "high-priority-max-frequency(MHz)"); in _isst_fact_display_information()
280 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
285 "high-priority-max-avx2-frequency(MHz)"); in _isst_fact_display_information()
288 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
293 "high-priority-max-avx512-frequency(MHz)"); in _isst_fact_display_information()
297 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
301 "speed-select-turbo-freq-clip-frequencies"); in _isst_fact_display_information()
303 snprintf(header, sizeof(header), "low-priority-max-frequency(MHz)"); in _isst_fact_display_information()
305 fact_info->lp_clipping_ratio_license_sse * in _isst_fact_display_information()
307 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
309 "low-priority-max-avx2-frequency(MHz)"); in _isst_fact_display_information()
311 fact_info->lp_clipping_ratio_license_avx2 * in _isst_fact_display_information()
313 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
315 "low-priority-max-avx512-frequency(MHz)"); in _isst_fact_display_information()
317 fact_info->lp_clipping_ratio_license_avx512 * in _isst_fact_display_information()
319 format_and_print(outf, base_level + 2, header, value); in _isst_fact_display_information()
327 int level = 1; in isst_ctdp_display_core_info() local
330 snprintf(header, sizeof(header), "package-%d:die-%d:cpu-%d", in isst_ctdp_display_core_info()
333 format_and_print(outf, level++, header, NULL); in isst_ctdp_display_core_info()
335 snprintf(header, sizeof(header), "package-%d", in isst_ctdp_display_core_info()
337 format_and_print(outf, level++, header, NULL); in isst_ctdp_display_core_info()
338 snprintf(header, sizeof(header), "die-%d", in isst_ctdp_display_core_info()
340 format_and_print(outf, level++, header, NULL); in isst_ctdp_display_core_info()
341 snprintf(header, sizeof(header), "cpu-%d", cpu); in isst_ctdp_display_core_info()
342 format_and_print(outf, level++, header, NULL); in isst_ctdp_display_core_info()
351 format_and_print(outf, level, prefix, value); in isst_ctdp_display_core_info()
361 static int level; in isst_ctdp_display_information() local
364 if (pkg_dev->processed) in isst_ctdp_display_information()
365 level = print_package_info(cpu, outf); in isst_ctdp_display_information()
367 for (i = 0; i <= pkg_dev->levels; ++i) { in isst_ctdp_display_information()
371 ctdp_level = &pkg_dev->ctdp_level[i]; in isst_ctdp_display_information()
372 if (!ctdp_level->processed) in isst_ctdp_display_information()
375 snprintf(header, sizeof(header), "perf-profile-level-%d", in isst_ctdp_display_information()
376 ctdp_level->level); in isst_ctdp_display_information()
377 format_and_print(outf, level + 1, header, NULL); in isst_ctdp_display_information()
379 snprintf(header, sizeof(header), "cpu-count"); in isst_ctdp_display_information()
383 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
385 j = CPU_COUNT_S(ctdp_level->core_cpumask_size, in isst_ctdp_display_information()
386 ctdp_level->core_cpumask); in isst_ctdp_display_information()
388 snprintf(header, sizeof(header), "enable-cpu-count"); in isst_ctdp_display_information()
390 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
393 if (ctdp_level->core_cpumask_size) { in isst_ctdp_display_information()
394 snprintf(header, sizeof(header), "enable-cpu-mask"); in isst_ctdp_display_information()
396 ctdp_level->core_cpumask_size, in isst_ctdp_display_information()
397 ctdp_level->core_cpumask); in isst_ctdp_display_information()
398 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
400 snprintf(header, sizeof(header), "enable-cpu-list"); in isst_ctdp_display_information()
402 ctdp_level->core_cpumask_size, in isst_ctdp_display_information()
403 ctdp_level->core_cpumask); in isst_ctdp_display_information()
404 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
407 snprintf(header, sizeof(header), "thermal-design-power-ratio"); in isst_ctdp_display_information()
408 snprintf(value, sizeof(value), "%d", ctdp_level->tdp_ratio); in isst_ctdp_display_information()
409 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
411 snprintf(header, sizeof(header), "base-frequency(MHz)"); in isst_ctdp_display_information()
412 if (!ctdp_level->sse_p1) in isst_ctdp_display_information()
413 ctdp_level->sse_p1 = ctdp_level->tdp_ratio; in isst_ctdp_display_information()
415 ctdp_level->sse_p1 * DISP_FREQ_MULTIPLIER); in isst_ctdp_display_information()
416 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
418 if (ctdp_level->avx2_p1) { in isst_ctdp_display_information()
419 snprintf(header, sizeof(header), "base-frequency-avx2(MHz)"); in isst_ctdp_display_information()
421 ctdp_level->avx2_p1 * DISP_FREQ_MULTIPLIER); in isst_ctdp_display_information()
422 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
425 if (ctdp_level->avx512_p1) { in isst_ctdp_display_information()
426 snprintf(header, sizeof(header), "base-frequency-avx512(MHz)"); in isst_ctdp_display_information()
428 ctdp_level->avx512_p1 * DISP_FREQ_MULTIPLIER); in isst_ctdp_display_information()
429 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
432 if (ctdp_level->uncore_p1) { in isst_ctdp_display_information()
433 snprintf(header, sizeof(header), "uncore-frequency-min(MHz)"); in isst_ctdp_display_information()
435 ctdp_level->uncore_p1 * DISP_FREQ_MULTIPLIER); in isst_ctdp_display_information()
436 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
439 if (ctdp_level->uncore_p0) { in isst_ctdp_display_information()
440 snprintf(header, sizeof(header), "uncore-frequency-max(MHz)"); in isst_ctdp_display_information()
442 ctdp_level->uncore_p0 * DISP_FREQ_MULTIPLIER); in isst_ctdp_display_information()
443 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
446 if (ctdp_level->mem_freq) { in isst_ctdp_display_information()
447 snprintf(header, sizeof(header), "mem-frequency(MHz)"); in isst_ctdp_display_information()
449 ctdp_level->mem_freq * DISP_FREQ_MULTIPLIER); in isst_ctdp_display_information()
450 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
454 "speed-select-turbo-freq"); in isst_ctdp_display_information()
455 if (ctdp_level->fact_support) { in isst_ctdp_display_information()
456 if (ctdp_level->fact_enabled) in isst_ctdp_display_information()
462 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
465 "speed-select-base-freq"); in isst_ctdp_display_information()
466 if (ctdp_level->pbf_support) { in isst_ctdp_display_information()
467 if (ctdp_level->pbf_enabled) in isst_ctdp_display_information()
473 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
476 "speed-select-core-power"); in isst_ctdp_display_information()
477 if (ctdp_level->sst_cp_support) { in isst_ctdp_display_information()
478 if (ctdp_level->sst_cp_enabled) in isst_ctdp_display_information()
484 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
487 if (ctdp_level->pbf_support) in isst_ctdp_display_information()
490 &ctdp_level->pbf_info, in isst_ctdp_display_information()
491 level + 2); in isst_ctdp_display_information()
495 if (ctdp_level->pkg_tdp) { in isst_ctdp_display_information()
496 snprintf(header, sizeof(header), "thermal-design-power(W)"); in isst_ctdp_display_information()
497 snprintf(value, sizeof(value), "%d", ctdp_level->pkg_tdp); in isst_ctdp_display_information()
498 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
501 if (ctdp_level->t_proc_hot) { in isst_ctdp_display_information()
502 snprintf(header, sizeof(header), "tjunction-max(C)"); in isst_ctdp_display_information()
503 snprintf(value, sizeof(value), "%d", ctdp_level->t_proc_hot); in isst_ctdp_display_information()
504 format_and_print(outf, level + 2, header, value); in isst_ctdp_display_information()
507 snprintf(header, sizeof(header), "turbo-ratio-limits-sse"); in isst_ctdp_display_information()
508 format_and_print(outf, level + 2, header, NULL); in isst_ctdp_display_information()
510 snprintf(header, sizeof(header), "bucket-%d", j); in isst_ctdp_display_information()
511 format_and_print(outf, level + 3, header, NULL); in isst_ctdp_display_information()
513 snprintf(header, sizeof(header), "core-count"); in isst_ctdp_display_information()
514 snprintf(value, sizeof(value), "%llu", (ctdp_level->buckets_info >> (j * 8)) & 0xff); in isst_ctdp_display_information()
515 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
518 "max-turbo-frequency(MHz)"); in isst_ctdp_display_information()
520 ctdp_level->trl_sse_active_cores[j] * in isst_ctdp_display_information()
522 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
525 if (ctdp_level->trl_avx_active_cores[0]) { in isst_ctdp_display_information()
526 snprintf(header, sizeof(header), "turbo-ratio-limits-avx2"); in isst_ctdp_display_information()
527 format_and_print(outf, level + 2, header, NULL); in isst_ctdp_display_information()
529 snprintf(header, sizeof(header), "bucket-%d", j); in isst_ctdp_display_information()
530 format_and_print(outf, level + 3, header, NULL); in isst_ctdp_display_information()
532 snprintf(header, sizeof(header), "core-count"); in isst_ctdp_display_information()
533 snprintf(value, sizeof(value), "%llu", (ctdp_level->buckets_info >> (j * 8)) & 0xff); in isst_ctdp_display_information()
534 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
536 snprintf(header, sizeof(header), "max-turbo-frequency(MHz)"); in isst_ctdp_display_information()
537 … snprintf(value, sizeof(value), "%d", ctdp_level->trl_avx_active_cores[j] * DISP_FREQ_MULTIPLIER); in isst_ctdp_display_information()
538 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
542 if (ctdp_level->trl_avx_512_active_cores[0]) { in isst_ctdp_display_information()
543 snprintf(header, sizeof(header), "turbo-ratio-limits-avx512"); in isst_ctdp_display_information()
544 format_and_print(outf, level + 2, header, NULL); in isst_ctdp_display_information()
546 snprintf(header, sizeof(header), "bucket-%d", j); in isst_ctdp_display_information()
547 format_and_print(outf, level + 3, header, NULL); in isst_ctdp_display_information()
549 snprintf(header, sizeof(header), "core-count"); in isst_ctdp_display_information()
550 snprintf(value, sizeof(value), "%llu", (ctdp_level->buckets_info >> (j * 8)) & 0xff); in isst_ctdp_display_information()
551 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
553 snprintf(header, sizeof(header), "max-turbo-frequency(MHz)"); in isst_ctdp_display_information()
554 …snprintf(value, sizeof(value), "%d", ctdp_level->trl_avx_512_active_cores[j] * DISP_FREQ_MULTIPLIE… in isst_ctdp_display_information()
555 format_and_print(outf, level + 4, header, value); in isst_ctdp_display_information()
559 if (ctdp_level->pbf_support) in isst_ctdp_display_information()
561 &ctdp_level->pbf_info, in isst_ctdp_display_information()
562 level + 2); in isst_ctdp_display_information()
563 if (ctdp_level->fact_support) in isst_ctdp_display_information()
565 &ctdp_level->fact_info, in isst_ctdp_display_information()
566 level + 2); in isst_ctdp_display_information()
586 void isst_pbf_display_information(int cpu, FILE *outf, int level, in isst_pbf_display_information() argument
592 _isst_pbf_display_information(cpu, outf, level, pbf_info, _level + 1); in isst_pbf_display_information()
596 void isst_fact_display_information(int cpu, FILE *outf, int level, in isst_fact_display_information() argument
603 _isst_fact_display_information(cpu, outf, level, fact_bucket, fact_avx, in isst_fact_display_information()
613 int level; in isst_clos_display_information() local
615 level = print_package_info(cpu, outf); in isst_clos_display_information()
617 snprintf(header, sizeof(header), "core-power"); in isst_clos_display_information()
618 format_and_print(outf, level + 1, header, NULL); in isst_clos_display_information()
622 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
625 snprintf(value, sizeof(value), "%d", clos_config->epp); in isst_clos_display_information()
626 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
628 snprintf(header, sizeof(header), "clos-proportional-priority"); in isst_clos_display_information()
629 snprintf(value, sizeof(value), "%d", clos_config->clos_prop_prio); in isst_clos_display_information()
630 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
632 snprintf(header, sizeof(header), "clos-min"); in isst_clos_display_information()
633 snprintf(value, sizeof(value), "%d MHz", clos_config->clos_min * DISP_FREQ_MULTIPLIER); in isst_clos_display_information()
634 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
636 snprintf(header, sizeof(header), "clos-max"); in isst_clos_display_information()
637 if (clos_config->clos_max == 0xff) in isst_clos_display_information()
640 snprintf(value, sizeof(value), "%d MHz", clos_config->clos_max * DISP_FREQ_MULTIPLIER); in isst_clos_display_information()
641 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
643 snprintf(header, sizeof(header), "clos-desired"); in isst_clos_display_information()
644 snprintf(value, sizeof(value), "%d MHz", clos_config->clos_desired * DISP_FREQ_MULTIPLIER); in isst_clos_display_information()
645 format_and_print(outf, level + 2, header, value); in isst_clos_display_information()
647 format_and_print(outf, level, NULL, NULL); in isst_clos_display_information()
656 int level; in isst_clos_display_clos_information() local
658 level = print_package_info(cpu, outf); in isst_clos_display_clos_information()
660 snprintf(header, sizeof(header), "core-power"); in isst_clos_display_clos_information()
661 format_and_print(outf, level + 1, header, NULL); in isst_clos_display_clos_information()
663 snprintf(header, sizeof(header), "support-status"); in isst_clos_display_clos_information()
668 format_and_print(outf, level + 2, header, value); in isst_clos_display_clos_information()
670 snprintf(header, sizeof(header), "enable-status"); in isst_clos_display_clos_information()
675 format_and_print(outf, level + 2, header, value); in isst_clos_display_clos_information()
677 snprintf(header, sizeof(header), "clos-enable-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), "priority-type"); in isst_clos_display_clos_information()
689 format_and_print(outf, level + 2, header, value); in isst_clos_display_clos_information()
691 format_and_print(outf, level, NULL, NULL); in isst_clos_display_clos_information()
698 int level; in isst_clos_display_assoc_information() local
700 level = print_package_info(cpu, outf); in isst_clos_display_assoc_information()
702 snprintf(header, sizeof(header), "get-assoc"); in isst_clos_display_assoc_information()
703 format_and_print(outf, level + 1, header, NULL); in isst_clos_display_assoc_information()
707 format_and_print(outf, level + 2, header, value); in isst_clos_display_assoc_information()
709 format_and_print(outf, level, NULL, NULL); in isst_clos_display_assoc_information()
717 int level = 3; in isst_display_result() local
720 level = print_package_info(cpu, outf); in isst_display_result()
723 format_and_print(outf, level + 1, header, NULL); in isst_display_result()
729 format_and_print(outf, level + 2, header, value); in isst_display_result()
731 format_and_print(outf, level, NULL, NULL); in isst_display_result()
769 format_and_print(outf, 2, header, value); in isst_display_error_info_message()