]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
s390/idle: Add comment for non obvious code
authorHeiko Carstens <hca@linux.ibm.com>
Wed, 18 Feb 2026 14:20:06 +0000 (15:20 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Wed, 25 Feb 2026 15:46:07 +0000 (16:46 +0100)
Add a comment to update_timer_idle() which describes why wall time (not
steal time) is added to steal_timer. This is not obvious and was reported
by Frederic Weisbecker.

Reported-by: Frederic Weisbecker <frederic@kernel.org>
Closes: https://lore.kernel.org/all/aXEVM-04lj0lntMr@localhost.localdomain/
Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/kernel/idle.c

index 0f9e53f0a06861c01f28fa342a094e34849f0e9d..4e09f126d4fc5f63a874b70e3ec1e818c59e8311 100644 (file)
@@ -34,6 +34,15 @@ void update_timer_idle(void)
                        this_cpu_add(mt_cycles[i], cycles_new[i] - idle->mt_cycles_enter[i]);
        }
 
+       /*
+        * This is a bit subtle: Forward last_update_clock so it excludes idle
+        * time. For correct steal time calculation in do_account_vtime() add
+        * passed wall time before idle_enter to steal_timer:
+        * During the passed wall time before idle_enter CPU time may have
+        * been accounted to system, hardirq, softirq, etc. lowcore fields.
+        * The accounted CPU times will be subtracted again from steal_timer
+        * when accumulated steal time is calculated in do_account_vtime().
+        */
        lc->steal_timer += idle->clock_idle_enter - lc->last_update_clock;
        lc->last_update_clock = lc->int_clock;