]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ACPI: processor: idle: Eliminate static variable flat_state_cnt
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 13 Aug 2025 10:38:58 +0000 (12:38 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 2 Sep 2025 14:08:53 +0000 (16:08 +0200)
Instead of using static variable flat_state_cnt to pass data between
functions involved in the _LPI information processing, pass the current
number of "flattened" idle states to flatten_lpi_states() and make it
return the updated number of those states.  At the same time, use a
local variable called state_count to store the number of "flattened"
idle states found so far in acpi_processor_get_lpi_info().

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: lihuisong@huawei.com
Link: https://patch.msgid.link/10715991.nUPlyArG6x@rafael.j.wysocki
drivers/acpi/processor_idle.c

index 0c8a88aa055331a458079608c475a60e68e258e7..5dacf41d7cc0a0f8585936a01676ef56305b9300 100644 (file)
@@ -998,11 +998,6 @@ end:
        return ret;
 }
 
-/*
- * flat_state_cnt - the number of composite LPI states after the process of flattening
- */
-static int flat_state_cnt;
-
 /**
  * combine_lpi_states - combine local and parent LPI states to form a composite LPI state
  *
@@ -1045,9 +1040,10 @@ static void stash_composite_state(struct acpi_lpi_states_array *curr_level,
        curr_level->composite_states[curr_level->composite_states_size++] = t;
 }
 
-static int flatten_lpi_states(struct acpi_processor *pr,
-                             struct acpi_lpi_states_array *curr_level,
-                             struct acpi_lpi_states_array *prev_level)
+static unsigned int flatten_lpi_states(struct acpi_processor *pr,
+                                      unsigned int flat_state_cnt,
+                                      struct acpi_lpi_states_array *curr_level,
+                                      struct acpi_lpi_states_array *prev_level)
 {
        int i, j, state_count = curr_level->size;
        struct acpi_lpi_state *p, *t = curr_level->entries;
@@ -1087,7 +1083,7 @@ static int flatten_lpi_states(struct acpi_processor *pr,
        }
 
        kfree(curr_level->entries);
-       return 0;
+       return flat_state_cnt;
 }
 
 int __weak acpi_processor_ffh_lpi_probe(unsigned int cpu)
@@ -1102,6 +1098,7 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
        acpi_handle handle = pr->handle, pr_ahandle;
        struct acpi_device *d = NULL;
        struct acpi_lpi_states_array info[2], *tmp, *prev, *curr;
+       unsigned int state_count;
 
        /* make sure our architecture has support */
        ret = acpi_processor_ffh_lpi_probe(pr->id);
@@ -1114,14 +1111,13 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
        if (!acpi_has_method(handle, "_LPI"))
                return -EINVAL;
 
-       flat_state_cnt = 0;
        prev = &info[0];
        curr = &info[1];
        handle = pr->handle;
        ret = acpi_processor_evaluate_lpi(handle, prev);
        if (ret)
                return ret;
-       flatten_lpi_states(pr, prev, NULL);
+       state_count = flatten_lpi_states(pr, 0, prev, NULL);
 
        status = acpi_get_parent(handle, &pr_ahandle);
        while (ACPI_SUCCESS(status)) {
@@ -1143,18 +1139,19 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
                        break;
 
                /* flatten all the LPI states in this level of hierarchy */
-               flatten_lpi_states(pr, curr, prev);
+               state_count = flatten_lpi_states(pr, state_count, curr, prev);
 
                tmp = prev, prev = curr, curr = tmp;
 
                status = acpi_get_parent(handle, &pr_ahandle);
        }
 
-       pr->power.count = flat_state_cnt;
        /* reset the index after flattening */
-       for (i = 0; i < pr->power.count; i++)
+       for (i = 0; i < state_count; i++)
                pr->power.lpi_states[i].index = i;
 
+       pr->power.count = state_count;
+
        /* Tell driver that _LPI is supported. */
        pr->flags.has_lpi = 1;
        pr->flags.power = 1;