cpufreq: intel_pstate: New sysfs entry to control HWP boost
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Tue, 5 Jun 2018 21:42:41 +0000 (14:42 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 6 Jun 2018 06:37:52 +0000 (08:37 +0200)
A new attribute is added to intel_pstate sysfs to enable/disable
HWP dynamic performance boost.

Reported-by: Mel Gorman <mgorman@techsingularity.net>
Tested-by: Giovanni Gherdovich <ggherdovich@suse.cz>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/intel_pstate.c

index 5b2b6b6..70bf63b 100644 (file)
@@ -1033,6 +1033,30 @@ static ssize_t store_min_perf_pct(struct kobject *a, struct attribute *b,
        return count;
 }
 
+static ssize_t show_hwp_dynamic_boost(struct kobject *kobj,
+                               struct attribute *attr, char *buf)
+{
+       return sprintf(buf, "%u\n", hwp_boost);
+}
+
+static ssize_t store_hwp_dynamic_boost(struct kobject *a, struct attribute *b,
+                                      const char *buf, size_t count)
+{
+       unsigned int input;
+       int ret;
+
+       ret = kstrtouint(buf, 10, &input);
+       if (ret)
+               return ret;
+
+       mutex_lock(&intel_pstate_driver_lock);
+       hwp_boost = !!input;
+       intel_pstate_update_policies();
+       mutex_unlock(&intel_pstate_driver_lock);
+
+       return count;
+}
+
 show_one(max_perf_pct, max_perf_pct);
 show_one(min_perf_pct, min_perf_pct);
 
@@ -1042,6 +1066,7 @@ define_one_global_rw(max_perf_pct);
 define_one_global_rw(min_perf_pct);
 define_one_global_ro(turbo_pct);
 define_one_global_ro(num_pstates);
+define_one_global_rw(hwp_dynamic_boost);
 
 static struct attribute *intel_pstate_attributes[] = {
        &status.attr,
@@ -1082,6 +1107,11 @@ static void __init intel_pstate_sysfs_expose_params(void)
        rc = sysfs_create_file(intel_pstate_kobject, &min_perf_pct.attr);
        WARN_ON(rc);
 
+       if (hwp_active) {
+               rc = sysfs_create_file(intel_pstate_kobject,
+                                      &hwp_dynamic_boost.attr);
+               WARN_ON(rc);
+       }
 }
 /************************** sysfs end ************************/