]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cpuidle: teo: Clarify two code comments
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 13 Jan 2025 18:41:55 +0000 (19:41 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 20 Jan 2025 16:16:45 +0000 (17:16 +0100)
Rewrite two code comments suposed to explain its behavior that are too
concise or not sufficiently clear.

No functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Christian Loehle <christian.loehle@arm.com>
Tested-by: Aboorva Devarajan <aboorvad@linux.ibm.com>
Tested-by: Christian Loehle <christian.loehle@arm.com>
Link: https://patch.msgid.link/8472971.T7Z3S40VBb@rjwysocki.net
[ rjw: Fixed 2 typos in new comments ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/governors/teo.c

index 95d76c8e0d129f0ca4a6407533cb88a7dfeadf97..411b315081f8bc3d9cc32b2188caa0a7346e0297 100644 (file)
@@ -154,9 +154,10 @@ static void teo_update(struct cpuidle_driver *drv, struct cpuidle_device *dev)
 
        if (cpu_data->time_span_ns >= cpu_data->sleep_length_ns) {
                /*
-                * One of the safety nets has triggered or the wakeup was close
-                * enough to the closest timer event expected at the idle state
-                * selection time to be discarded.
+                * This causes the wakeup to be counted as a hit regardless of
+                * the real idle duration which doesn't need to be computed
+                * because the wakeup has been close enough to an anticipated
+                * timer.
                 */
                measured_ns = U64_MAX;
        } else {
@@ -302,8 +303,13 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
 
        cpu_data->time_span_ns = local_clock();
        /*
-        * Set the expected sleep length to infinity in case of an early
-        * return.
+        * Set the sleep length to infinity in case the invocation of
+        * tick_nohz_get_sleep_length() below is skipped, in which case it won't
+        * be known whether or not the subsequent wakeup is caused by a timer.
+        * It is generally fine to count the wakeup as an intercept then, except
+        * for the cases when the CPU is mostly woken up by timers and there may
+        * be opportunities to ask for a deeper idle state when no imminent
+        * timers are scheduled which may be missed.
         */
        cpu_data->sleep_length_ns = KTIME_MAX;