summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>2019-09-14 15:45:47 -0400
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>2019-09-19 07:51:29 -0400
commit188afed9db7db3aefc8c9c33150be2f8f398da9a (patch)
tree0a4ac69a876ca405b01e51ca545b1991a9cbd09a /tools
parentd2d1f304dc965e6a06e7f105b09bffceb477fccc (diff)
tools/power/x86/intel-speed-select: Extend core-power command set
Add additional command to get the clos enable and priority type. The current info option is actually dumping per clos QOS config, so name the command appropriately to get-config. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/power/x86/intel-speed-select/isst-config.c38
-rw-r--r--tools/power/x86/intel-speed-select/isst-core.c25
-rw-r--r--tools/power/x86/intel-speed-select/isst-display.c28
-rw-r--r--tools/power/x86/intel-speed-select/isst.h5
4 files changed, 95 insertions, 1 deletions
diff --git a/tools/power/x86/intel-speed-select/isst-config.c b/tools/power/x86/intel-speed-select/isst-config.c
index 889396d676cb..6a54e165672d 100644
--- a/tools/power/x86/intel-speed-select/isst-config.c
+++ b/tools/power/x86/intel-speed-select/isst-config.c
@@ -1133,6 +1133,40 @@ static void dump_clos_config(void)
1133 isst_ctdp_display_information_end(outf); 1133 isst_ctdp_display_information_end(outf);
1134} 1134}
1135 1135
1136static void get_clos_info_for_cpu(int cpu, void *arg1, void *arg2, void *arg3,
1137 void *arg4)
1138{
1139 int enable, ret, prio_type;
1140
1141 ret = isst_clos_get_clos_information(cpu, &enable, &prio_type);
1142 if (ret)
1143 perror("isst_clos_get_info");
1144 else
1145 isst_clos_display_clos_information(cpu, outf, enable, prio_type);
1146}
1147
1148static void dump_clos_info(void)
1149{
1150 if (cmd_help) {
1151 fprintf(stderr,
1152 "Print Intel Speed Select Technology core power information\n");
1153 fprintf(stderr, "\tSpecify targeted cpu id with [--cpu|-c]\n");
1154 exit(0);
1155 }
1156
1157 if (!max_target_cpus) {
1158 fprintf(stderr,
1159 "Invalid target cpu. Specify with [-c|--cpu]\n");
1160 exit(0);
1161 }
1162
1163 isst_ctdp_display_information_start(outf);
1164 for_each_online_target_cpu_in_set(get_clos_info_for_cpu, NULL,
1165 NULL, NULL, NULL);
1166 isst_ctdp_display_information_end(outf);
1167
1168}
1169
1136static void set_clos_config_for_cpu(int cpu, void *arg1, void *arg2, void *arg3, 1170static void set_clos_config_for_cpu(int cpu, void *arg1, void *arg2, void *arg3,
1137 void *arg4) 1171 void *arg4)
1138{ 1172{
@@ -1286,10 +1320,11 @@ static struct process_cmd_struct isst_cmds[] = {
1286 { "turbo-freq", "info", dump_fact_config }, 1320 { "turbo-freq", "info", dump_fact_config },
1287 { "turbo-freq", "enable", set_fact_enable }, 1321 { "turbo-freq", "enable", set_fact_enable },
1288 { "turbo-freq", "disable", set_fact_disable }, 1322 { "turbo-freq", "disable", set_fact_disable },
1289 { "core-power", "info", dump_clos_config }, 1323 { "core-power", "info", dump_clos_info },
1290 { "core-power", "enable", set_clos_enable }, 1324 { "core-power", "enable", set_clos_enable },
1291 { "core-power", "disable", set_clos_disable }, 1325 { "core-power", "disable", set_clos_disable },
1292 { "core-power", "config", set_clos_config }, 1326 { "core-power", "config", set_clos_config },
1327 { "core-power", "get-config", dump_clos_config },
1293 { "core-power", "assoc", set_clos_assoc }, 1328 { "core-power", "assoc", set_clos_assoc },
1294 { "core-power", "get-assoc", get_clos_assoc }, 1329 { "core-power", "get-assoc", get_clos_assoc },
1295 { NULL, NULL, NULL } 1330 { NULL, NULL, NULL }
@@ -1491,6 +1526,7 @@ static void core_power_help(void)
1491 printf("\tenable\n"); 1526 printf("\tenable\n");
1492 printf("\tdisable\n"); 1527 printf("\tdisable\n");
1493 printf("\tconfig\n"); 1528 printf("\tconfig\n");
1529 printf("\tget-config\n");
1494 printf("\tassoc\n"); 1530 printf("\tassoc\n");
1495 printf("\tget-assoc\n"); 1531 printf("\tget-assoc\n");
1496} 1532}
diff --git a/tools/power/x86/intel-speed-select/isst-core.c b/tools/power/x86/intel-speed-select/isst-core.c
index 0bf341ad9697..6dee5332c9d3 100644
--- a/tools/power/x86/intel-speed-select/isst-core.c
+++ b/tools/power/x86/intel-speed-select/isst-core.c
@@ -619,6 +619,31 @@ int isst_get_process_ctdp(int cpu, int tdp_level, struct isst_pkg_ctdp *pkg_dev)
619 return 0; 619 return 0;
620} 620}
621 621
622int isst_clos_get_clos_information(int cpu, int *enable, int *type)
623{
624 unsigned int resp;
625 int ret;
626
627 ret = isst_send_mbox_command(cpu, CONFIG_CLOS, CLOS_PM_QOS_CONFIG, 0, 0,
628 &resp);
629 if (ret)
630 return ret;
631
632 debug_printf("cpu:%d CLOS_PM_QOS_CONFIG resp:%x\n", cpu, resp);
633
634 if (resp & BIT(1))
635 *enable = 1;
636 else
637 *enable = 0;
638
639 if (resp & BIT(2))
640 *type = 1;
641 else
642 *type = 0;
643
644 return 0;
645}
646
622int isst_pm_qos_config(int cpu, int enable_clos, int priority_type) 647int isst_pm_qos_config(int cpu, int enable_clos, int priority_type)
623{ 648{
624 unsigned int req, resp; 649 unsigned int req, resp;
diff --git a/tools/power/x86/intel-speed-select/isst-display.c b/tools/power/x86/intel-speed-select/isst-display.c
index bd7aaf27e4de..2e6e5fcdbd7c 100644
--- a/tools/power/x86/intel-speed-select/isst-display.c
+++ b/tools/power/x86/intel-speed-select/isst-display.c
@@ -503,6 +503,34 @@ void isst_clos_display_information(int cpu, FILE *outf, int clos,
503 format_and_print(outf, 1, NULL, NULL); 503 format_and_print(outf, 1, NULL, NULL);
504} 504}
505 505
506void isst_clos_display_clos_information(int cpu, FILE *outf,
507 int clos_enable, int type)
508{
509 char header[256];
510 char value[256];
511
512 snprintf(header, sizeof(header), "package-%d",
513 get_physical_package_id(cpu));
514 format_and_print(outf, 1, header, NULL);
515 snprintf(header, sizeof(header), "die-%d", get_physical_die_id(cpu));
516 format_and_print(outf, 2, header, NULL);
517 snprintf(header, sizeof(header), "cpu-%d", cpu);
518 format_and_print(outf, 3, header, NULL);
519
520 snprintf(header, sizeof(header), "core-power");
521 format_and_print(outf, 4, header, NULL);
522
523 snprintf(header, sizeof(header), "enable-status");
524 snprintf(value, sizeof(value), "%d", clos_enable);
525 format_and_print(outf, 5, header, value);
526
527 snprintf(header, sizeof(header), "priority-type");
528 snprintf(value, sizeof(value), "%d", type);
529 format_and_print(outf, 5, header, value);
530
531 format_and_print(outf, 1, NULL, NULL);
532}
533
506void isst_clos_display_assoc_information(int cpu, FILE *outf, int clos) 534void isst_clos_display_assoc_information(int cpu, FILE *outf, int clos)
507{ 535{
508 char header[256]; 536 char header[256];
diff --git a/tools/power/x86/intel-speed-select/isst.h b/tools/power/x86/intel-speed-select/isst.h
index 48655d0dee2d..09e16a41b57c 100644
--- a/tools/power/x86/intel-speed-select/isst.h
+++ b/tools/power/x86/intel-speed-select/isst.h
@@ -231,4 +231,9 @@ extern int isst_write_reg(int reg, unsigned int val);
231 231
232extern void isst_display_result(int cpu, FILE *outf, char *feature, char *cmd, 232extern void isst_display_result(int cpu, FILE *outf, char *feature, char *cmd,
233 int result); 233 int result);
234
235extern int isst_clos_get_clos_information(int cpu, int *enable, int *type);
236extern void isst_clos_display_clos_information(int cpu, FILE *outf,
237 int clos_enable, int type);
238
234#endif 239#endif