]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
topology: Set capacity_freq_ref in all cases
authorVincent Guittot <vincent.guittot@linaro.org>
Wed, 17 Jan 2024 19:05:45 +0000 (20:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:28:42 +0000 (16:28 +0200)
commit 98323e9d70172f1b46d1cadb20d6c54abf62870d upstream.

If "capacity-dmips-mhz" is not set, raw_capacity is null and we skip the
normalization step which includes setting per_cpu capacity_freq_ref.
Always register the notifier but skip the capacity normalization if
raw_capacity is null.

Fixes: 9942cb22ea45 ("sched/topology: Add a new arch_scale_freq_ref() method")
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Pierre Gondois <pierre.gondois@arm.com>
Tested-by: Mark Brown <broonie@kernel.org>
Tested-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Link: https://lore.kernel.org/r/20240117190545.596057-1-vincent.guittot@linaro.org
Stable-dep-of: e37617c8e53a ("sched/fair: Fix frequency selection for non-invariant case")
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/arch_topology.c

index 5aaa0865625d0d10fd02d79b6721c2f6b2863dfe..2aa0c642529021e1d697c4622e351f72138ce386 100644 (file)
@@ -417,9 +417,6 @@ init_cpu_capacity_callback(struct notifier_block *nb,
        struct cpufreq_policy *policy = data;
        int cpu;
 
-       if (!raw_capacity)
-               return 0;
-
        if (val != CPUFREQ_CREATE_POLICY)
                return 0;
 
@@ -436,9 +433,11 @@ init_cpu_capacity_callback(struct notifier_block *nb,
        }
 
        if (cpumask_empty(cpus_to_visit)) {
-               topology_normalize_cpu_scale();
-               schedule_work(&update_topology_flags_work);
-               free_raw_capacity();
+               if (raw_capacity) {
+                       topology_normalize_cpu_scale();
+                       schedule_work(&update_topology_flags_work);
+                       free_raw_capacity();
+               }
                pr_debug("cpu_capacity: parsing done\n");
                schedule_work(&parsing_done_work);
        }
@@ -458,7 +457,7 @@ static int __init register_cpufreq_notifier(void)
         * On ACPI-based systems skip registering cpufreq notifier as cpufreq
         * information is not needed for cpu capacity initialization.
         */
-       if (!acpi_disabled || !raw_capacity)
+       if (!acpi_disabled)
                return -EINVAL;
 
        if (!alloc_cpumask_var(&cpus_to_visit, GFP_KERNEL))