]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ACPI: processor: idle: Rework the handling of acpi_processor_ffh_lpi_probe()
authorHuisong Li <lihuisong@huawei.com>
Tue, 20 Jan 2026 11:22:58 +0000 (19:22 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 27 Jan 2026 15:33:43 +0000 (16:33 +0100)
Move the acpi_processor_ffh_lpi_probe() call from
acpi_processor_setup_cpuidle_dev(), where its return value is
ignored, to acpi_processor_get_power_info(), which can take the
return value of that function into account in a meaningful way
and generally is a more suitable place for calling it.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
[ rjw: Message adjustment, subject and changelog edits ]
Link: https://patch.msgid.link/20260120112258.1595164-4-lihuisong@huawei.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/processor_idle.c

index ba4cde028b0e4c4a9b6b4c9f28d15adb2b6c21b9..81f372c64074678a3940d410c6cb35af971a0752 100644 (file)
@@ -1237,7 +1237,7 @@ static void acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
 }
 
 /**
- * acpi_processor_setup_cpuidle_dev - prepares and configures CPUIDLE
+ * acpi_processor_setup_cpuidle_dev - configures CPUIDLE
  * device i.e. per-cpu data
  *
  * @pr: the ACPI processor
@@ -1250,12 +1250,8 @@ static void acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
                return;
 
        dev->cpu = pr->id;
-       if (pr->flags.has_lpi) {
-               acpi_processor_ffh_lpi_probe(pr->id);
-               return;
-       }
-
-       acpi_processor_setup_cpuidle_cx(pr, dev);
+       if (!pr->flags.has_lpi)
+               acpi_processor_setup_cpuidle_cx(pr, dev);
 }
 
 static int acpi_processor_get_power_info(struct acpi_processor *pr)
@@ -1264,7 +1260,13 @@ static int acpi_processor_get_power_info(struct acpi_processor *pr)
 
        ret = acpi_processor_get_lpi_info(pr);
        if (ret)
-               ret = acpi_processor_get_cstate_info(pr);
+               return acpi_processor_get_cstate_info(pr);
+
+       if (pr->flags.has_lpi) {
+               ret = acpi_processor_ffh_lpi_probe(pr->id);
+               if (ret)
+                       pr_err("CPU%u: Invalid FFH LPI data\n", pr->id);
+       }
 
        return ret;
 }