]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cpuidle: governors: menu: Rearrange main loop in menu_select()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 13 Aug 2025 10:26:35 +0000 (12:26 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 21 Aug 2025 20:02:28 +0000 (22:02 +0200)
Reduce the indentation level in the main loop of menu_select() by
rearranging some checks and assignments in it.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Christian Loehle <christian.loehle@arm.com>
Link: https://patch.msgid.link/2389215.ElGaqSPkdT@rafael.j.wysocki
drivers/cpuidle/governors/menu.c

index b2e3d0b0a116dcadde8d15db08e1ae1c4d260aa1..4d9aa5ce31f0842438bfc8e9734ef281d99c8d13 100644 (file)
@@ -314,45 +314,47 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
                if (s->exit_latency_ns > latency_req)
                        break;
 
-               if (s->target_residency_ns > predicted_ns) {
-                       /*
-                        * Use a physical idle state, not busy polling, unless
-                        * a timer is going to trigger soon enough.
-                        */
-                       if ((drv->states[idx].flags & CPUIDLE_FLAG_POLLING) &&
-                           s->target_residency_ns <= data->next_timer_ns) {
-                               predicted_ns = s->target_residency_ns;
-                               idx = i;
-                               break;
-                       }
-                       if (predicted_ns < TICK_NSEC)
-                               break;
-
-                       if (!tick_nohz_tick_stopped()) {
-                               /*
-                                * If the state selected so far is shallow,
-                                * waking up early won't hurt, so retain the
-                                * tick in that case and let the governor run
-                                * again in the next iteration of the loop.
-                                */
-                               predicted_ns = drv->states[idx].target_residency_ns;
-                               break;
-                       }
+               if (s->target_residency_ns <= predicted_ns) {
+                       idx = i;
+                       continue;
+               }
+
+               /*
+                * Use a physical idle state, not busy polling, unless a timer
+                * is going to trigger soon enough.
+                */
+               if ((drv->states[idx].flags & CPUIDLE_FLAG_POLLING) &&
+                   s->target_residency_ns <= data->next_timer_ns) {
+                       predicted_ns = s->target_residency_ns;
+                       idx = i;
+                       break;
+               }
 
+               if (predicted_ns < TICK_NSEC)
+                       break;
+
+               if (!tick_nohz_tick_stopped()) {
                        /*
-                        * If the state selected so far is shallow and this
-                        * state's target residency matches the time till the
-                        * closest timer event, select this one to avoid getting
-                        * stuck in the shallow one for too long.
+                        * If the state selected so far is shallow, waking up
+                        * early won't hurt, so retain the tick in that case and
+                        * let the governor run again in the next iteration of
+                        * the idle loop.
                         */
-                       if (drv->states[idx].target_residency_ns < TICK_NSEC &&
-                           s->target_residency_ns <= delta_tick)
-                               idx = i;
-
-                       return idx;
+                       predicted_ns = drv->states[idx].target_residency_ns;
+                       break;
                }
 
-               idx = i;
+               /*
+                * If the state selected so far is shallow and this state's
+                * target residency matches the time till the closest timer
+                * event, select this one to avoid getting stuck in the shallow
+                * one for too long.
+                */
+               if (drv->states[idx].target_residency_ns < TICK_NSEC &&
+                   s->target_residency_ns <= delta_tick)
+                       idx = i;
+
+               return idx;
        }
 
        if (idx == -1)