cppc_cpufreq: expose information on frequency domains
authorIonela Voinescu <ionela.voinescu@arm.com>
Mon, 14 Dec 2020 12:38:22 +0000 (12:38 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 15 Dec 2020 18:19:32 +0000 (19:19 +0100)
Use the existing sysfs attribute "freqdomain_cpus" to expose
information to userspace about CPUs in the same frequency domain.

Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Mian Yousaf Kaukab <ykaukab@suse.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/ABI/testing/sysfs-devices-system-cpu
drivers/cpufreq/cppc_cpufreq.c

index 1a04ca8..0eee30b 100644 (file)
@@ -264,7 +264,8 @@ Description:        Discover CPUs in the same CPU frequency coordination domain
                attribute is useful for user space DVFS controllers to get better
                power/performance results for platforms using acpi-cpufreq.
 
-               This file is only present if the acpi-cpufreq driver is in use.
+               This file is only present if the acpi-cpufreq or the cppc-cpufreq
+               drivers are in use.
 
 
 What:          /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1}
index f15a44c..40b58d2 100644 (file)
@@ -402,6 +402,19 @@ static int cppc_cpufreq_set_boost(struct cpufreq_policy *policy, int state)
        return 0;
 }
 
+static ssize_t show_freqdomain_cpus(struct cpufreq_policy *policy, char *buf)
+{
+       unsigned int cpu = policy->cpu;
+
+       return cpufreq_show_cpus(all_cpu_data[cpu]->shared_cpu_map, buf);
+}
+cpufreq_freq_attr_ro(freqdomain_cpus);
+
+static struct freq_attr *cppc_cpufreq_attr[] = {
+       &freqdomain_cpus,
+       NULL,
+};
+
 static struct cpufreq_driver cppc_cpufreq_driver = {
        .flags = CPUFREQ_CONST_LOOPS,
        .verify = cppc_verify_policy,
@@ -410,6 +423,7 @@ static struct cpufreq_driver cppc_cpufreq_driver = {
        .init = cppc_cpufreq_cpu_init,
        .stop_cpu = cppc_cpufreq_stop_cpu,
        .set_boost = cppc_cpufreq_set_boost,
+       .attr = cppc_cpufreq_attr,
        .name = "cppc_cpufreq",
 };