tools/power/x86/intel-speed-select: SST BF/TF support per level
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Tue, 26 Mar 2024 22:55:53 +0000 (18:55 -0400)
committerHans de Goede <hdegoede@redhat.com>
Mon, 29 Apr 2024 11:31:50 +0000 (13:31 +0200)
SST BF and TF can be enabled/disabled per level. So check the current
level support from the mask of supported levels.

This change from a single level to mask for info.sst_tf_support and
info.sst_tf_support is indicated by API version change. Use as mask for
API version above 2. In this way there is no change in behavior when
running on older kernel with API version 2.

Since the tool can support now API version 3, update the supported API
version.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
tools/power/x86/intel-speed-select/isst-config.c
tools/power/x86/intel-speed-select/isst-core-tpmi.c
tools/power/x86/intel-speed-select/isst-core.c

index d7809b7c12d9fc9398783753fff5ad227e175058..424e708b7b20fd3ac47a06bf8762c8bfa49697d5 100644 (file)
@@ -18,7 +18,7 @@ struct process_cmd_struct {
 
 static const char *version_str = "v1.18";
 
-static const int supported_api_ver = 2;
+static const int supported_api_ver = 3;
 static struct isst_if_platform_info isst_platform_info;
 static char *progname;
 static int debug_flag;
index 3458768562e5e48cf72b85472a7d8dfab27e1cff..32ea70c7dbd8804e507cb775f8a201cba64d0fda 100644 (file)
@@ -194,8 +194,14 @@ static int tpmi_get_ctdp_control(struct isst_id *id, int config_index,
        if (!(info.level_mask & level_mask))
                return -1;
 
-       ctdp_level->fact_support = info.sst_tf_support;
-       ctdp_level->pbf_support = info.sst_bf_support;
+       if (api_version() > 2) {
+               ctdp_level->fact_support = info.sst_tf_support & BIT(config_index);
+               ctdp_level->pbf_support = info.sst_bf_support & BIT(config_index);
+       } else {
+               ctdp_level->fact_support = info.sst_tf_support;
+               ctdp_level->pbf_support = info.sst_bf_support;
+       }
+
        ctdp_level->fact_enabled = !!(info.feature_state & BIT(1));
        ctdp_level->pbf_enabled = !!(info.feature_state & BIT(0));
 
index f55fef4c13a7a34fcce5ff4d3190b47982ba5a14..05efffbca3b7a89bbb62da29f6024d7a7fba8423 100644 (file)
@@ -23,6 +23,7 @@ int isst_set_platform_ops(int api_version)
                isst_ops = mbox_get_platform_ops();
                break;
        case 2:
+       case 3:
                isst_ops = tpmi_get_platform_ops();
                break;
        default: