]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
s390/vtime: Use __this_cpu_read() / get rid of READ_ONCE()
authorHeiko Carstens <hca@linux.ibm.com>
Wed, 18 Feb 2026 14:20:10 +0000 (15:20 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Wed, 25 Feb 2026 15:46:07 +0000 (16:46 +0100)
do_account_vtime() runs always with interrupts disabled, therefore use
__this_cpu_read() instead of this_cpu_read() to get rid of a pointless
preempt_disable() / preempt_enable() pair.

Also there are no concurrent writers to the cpu time accounting fields
in lowcore. Therefore get rid of READ_ONCE() usages.

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/vtime.c

index 122d30b1044017fd20dfd61a123f0bbac6688928..4111ff4d727cc43d6352b1f32246f521d0c91b51 100644 (file)
@@ -137,23 +137,16 @@ static int do_account_vtime(struct task_struct *tsk)
                lc->system_timer += timer;
 
        /* Update MT utilization calculation */
-       if (smp_cpu_mtid &&
-           time_after64(jiffies_64, this_cpu_read(mt_scaling_jiffies)))
+       if (smp_cpu_mtid && time_after64(jiffies_64, __this_cpu_read(mt_scaling_jiffies)))
                update_mt_scaling();
 
        /* Calculate cputime delta */
-       user = update_tsk_timer(&tsk->thread.user_timer,
-                               READ_ONCE(lc->user_timer));
-       guest = update_tsk_timer(&tsk->thread.guest_timer,
-                                READ_ONCE(lc->guest_timer));
-       system = update_tsk_timer(&tsk->thread.system_timer,
-                                 READ_ONCE(lc->system_timer));
-       hardirq = update_tsk_timer(&tsk->thread.hardirq_timer,
-                                  READ_ONCE(lc->hardirq_timer));
-       softirq = update_tsk_timer(&tsk->thread.softirq_timer,
-                                  READ_ONCE(lc->softirq_timer));
-       lc->steal_timer +=
-               clock - user - guest - system - hardirq - softirq;
+       user = update_tsk_timer(&tsk->thread.user_timer, lc->user_timer);
+       guest = update_tsk_timer(&tsk->thread.guest_timer, lc->guest_timer);
+       system = update_tsk_timer(&tsk->thread.system_timer, lc->system_timer);
+       hardirq = update_tsk_timer(&tsk->thread.hardirq_timer, lc->hardirq_timer);
+       softirq = update_tsk_timer(&tsk->thread.softirq_timer, lc->softirq_timer);
+       lc->steal_timer += clock - user - guest - system - hardirq - softirq;
 
        /* Push account value */
        if (user) {