linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
To: andriy.shevchenko@linux.intel.com
Cc: platform-driver-x86@vger.kernel.org, prarit@redhat.com,
	linux-kernel@vger.kernel.org,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Subject: [PATCH 10/27] tools/power/x86/intel-speed-select: Enhance --info option
Date: Thu,  5 Mar 2020 14:45:21 -0800	[thread overview]
Message-ID: <20200305224538.490864-11-srinivas.pandruvada@linux.intel.com> (raw)
In-Reply-To: <20200305224538.490864-1-srinivas.pandruvada@linux.intel.com>

Add additional information, which will allow user to detect available
features. This will allow users to check presence of features before
continue to test.
A sample output:

$sudo ./intel-speed-select --info

Intel(R) Speed Select Technology
Executing on CPU model:85[0x55]
Platform: API version : 1
Platform: Driver version : 1
Platform: mbox supported : 1
Platform: mmio supported : 0
Intel(R) SST-PP (feature perf-profile) is not supported
Only performance level 0 (base level) is present
TDP level change control is locked
Intel(R) SST-TF (feature turbo-freq) is supported
Intel(R) SST-BF (feature base-freq) is supported
Intel(R) SST-CP (feature core-power) is supported

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 .../x86/intel-speed-select/isst-config.c      | 74 +++++++++++++++++++
 tools/power/x86/intel-speed-select/isst.h     |  2 +
 2 files changed, 76 insertions(+)

diff --git a/tools/power/x86/intel-speed-select/isst-config.c b/tools/power/x86/intel-speed-select/isst-config.c
index 5302a552f87f..65110d06394f 100644
--- a/tools/power/x86/intel-speed-select/isst-config.c
+++ b/tools/power/x86/intel-speed-select/isst-config.c
@@ -846,12 +846,85 @@ static int isst_fill_platform_info(void)
 	return 0;
 }
 
+static void isst_print_extended_platform_info(void)
+{
+	int cp_state, cp_cap, fact_support = 0, pbf_support = 0;
+	struct isst_pkg_ctdp_level_info ctdp_level;
+	struct isst_pkg_ctdp pkg_dev;
+	int ret, i, j;
+	FILE *filep;
+
+	for (i = 0; i < 256; ++i) {
+		char path[256];
+
+		snprintf(path, sizeof(path),
+			 "/sys/devices/system/cpu/cpu%d/topology/thread_siblings", i);
+		filep = fopen(path, "r");
+		if (filep)
+			break;
+	}
+
+	if (!filep)
+		return;
+
+	fclose(filep);
+
+	ret = isst_get_ctdp_levels(i, &pkg_dev);
+	if (ret)
+		return;
+
+	if (pkg_dev.enabled) {
+		fprintf(outf, "Intel(R) SST-PP (feature perf-profile) is supported\n");
+	} else {
+		fprintf(outf, "Intel(R) SST-PP (feature perf-profile) is not supported\n");
+		fprintf(outf, "Only performance level 0 (base level) is present\n");
+	}
+
+	if (pkg_dev.locked)
+		fprintf(outf, "TDP level change control is locked\n");
+	else
+		fprintf(outf, "TDP level change control is unlocked, max level: %d \n", pkg_dev.levels);
+
+	for (j = 0; j <= pkg_dev.levels; ++j) {
+		ret = isst_get_ctdp_control(i, j, &ctdp_level);
+		if (ret)
+			continue;
+
+		if (!fact_support && ctdp_level.fact_support)
+			fact_support = 1;
+
+		if (!pbf_support && ctdp_level.pbf_support)
+			pbf_support = 1;
+	}
+
+	if (fact_support)
+		fprintf(outf, "Intel(R) SST-TF (feature turbo-freq) is supported\n");
+	else
+		fprintf(outf, "Intel(R) SST-TF (feature turbo-freq) is not supported\n");
+
+	if (pbf_support)
+		fprintf(outf, "Intel(R) SST-BF (feature base-freq) is supported\n");
+	else
+		fprintf(outf, "Intel(R) SST-BF (feature base-freq) is not supported\n");
+
+	ret = isst_read_pm_config(i, &cp_state, &cp_cap);
+	if (cp_cap)
+		fprintf(outf, "Intel(R) SST-CP (feature core-power) is supported\n");
+	else
+		fprintf(outf, "Intel(R) SST-CP (feature core-power) is not supported\n");
+}
+
 static void isst_print_platform_information(void)
 {
 	struct isst_if_platform_info platform_info;
 	const char *pathname = "/dev/isst_interface";
 	int fd;
 
+	if (is_clx_n_platform()) {
+		fprintf(stderr, "\nThis option in not supported on this platform\n");
+		exit(0);
+	}
+
 	fd = open(pathname, O_RDWR);
 	if (fd < 0)
 		err(-1, "%s open failed", pathname);
@@ -867,6 +940,7 @@ static void isst_print_platform_information(void)
 			platform_info.mbox_supported);
 		fprintf(outf, "Platform: mmio supported : %d\n",
 			platform_info.mmio_supported);
+		isst_print_extended_platform_info();
 	}
 
 	close(fd);
diff --git a/tools/power/x86/intel-speed-select/isst.h b/tools/power/x86/intel-speed-select/isst.h
index 53e147a9a295..639d3d649480 100644
--- a/tools/power/x86/intel-speed-select/isst.h
+++ b/tools/power/x86/intel-speed-select/isst.h
@@ -196,6 +196,8 @@ extern int isst_send_msr_command(unsigned int cpu, unsigned int command,
 				 int write, unsigned long long *req_resp);
 
 extern int isst_get_ctdp_levels(int cpu, struct isst_pkg_ctdp *pkg_dev);
+extern int isst_get_ctdp_control(int cpu, int config_index,
+				 struct isst_pkg_ctdp_level_info *ctdp_level);
 extern int isst_get_coremask_info(int cpu, int config_index,
 			   struct isst_pkg_ctdp_level_info *ctdp_level);
 extern int isst_get_process_ctdp(int cpu, int tdp_level,
-- 
2.24.1


  parent reply	other threads:[~2020-03-05 22:47 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-05 22:45 [PATCH 00/27] tools/power/x86/intel-speed-select: Enhancements Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 01/27] tools/power/x86/intel-speed-select: Warn for invalid package id Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 02/27] tools/power/x86/intel-speed-select: Make target CPU optional for core-power info Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 03/27] tools/power/x86/intel-speed-select: Enhance core-power info command Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 04/27] tools/power/x86/intel-speed-select: Use more verbiage for clos information Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 05/27] tools/power/x86/intel-speed-select: Special handling for CPU 0 online/offline Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 06/27] tools/power/x86/intel-speed-select: Max CPU count calculation when CPU0 is offline Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 07/27] tools/power/x86/intel-speed-select: Store topology information Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 08/27] tools/power/x86/intel-speed-select: Helpful warning for missing kernel interface Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 09/27] tools/power/x86/intel-speed-select: Enhance help Srinivas Pandruvada
2020-03-05 22:45 ` Srinivas Pandruvada [this message]
2020-03-05 22:45 ` [PATCH 11/27] tools/power/x86/intel-speed-select: Add an API for error/information print Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 12/27] tools/power/x86/intel-speed-select: Improve error display for perf-profile feature Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 13/27] tools/power/x86/intel-speed-select: Check feature status first Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 14/27] tools/power/x86/intel-speed-select: Display error for invalid priority type Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 15/27] tools/power/x86/intel-speed-select: Enhance help for core-power assoc Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 16/27] tools/power/x86/intel-speed-select: Improve output of perf-profile commands Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 17/27] tools/power/x86/intel-speed-select: Improve error display for base-freq feature Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 18/27] tools/power/x86/intel-speed-select: Improve error display for turbo-freq feature Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 19/27] tools/power/x86/intel-speed-select: Kernel interface error handling Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 20/27] tools/power/x86/intel-speed-select: Improve core-power result and error display Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 21/27] tools/power/x86/intel-speed-select: Show error for invalid CPUs in the options Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 22/27] tools/power/x86/intel-speed-select: Improve CLX commands Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 23/27] tools/power/x86/intel-speed-select: Fix avx options for turbo-freq feature Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 24/27] tools/power/x86/intel-speed-select: Print friendly warning for bad command line Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 25/27] tools/power/x86/intel-speed-select: Add display for enabled cpus count Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 26/27] tools/power/x86/intel-speed-select: Avoid duplicate Package strings for json Srinivas Pandruvada
2020-03-05 22:45 ` [PATCH 27/27] tools/power/x86/intel-speed-select: Update version Srinivas Pandruvada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200305224538.490864-11-srinivas.pandruvada@linux.intel.com \
    --to=srinivas.pandruvada@linux.intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=prarit@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).