Now that we have a vtime safe kcpustat accessor, use it to fix frozen
kcpustat values on nohz_full CPUs.

Reported-by: Yauheni Kaliuta <yauheni.kali...@redhat.com>
Signed-off-by: Frederic Weisbecker <frede...@kernel.org>
Cc: Yauheni Kaliuta <yauheni.kali...@redhat.com>
Cc: Thomas Gleixner <t...@linutronix.de>
Cc: Rik van Riel <r...@redhat.com>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Wanpeng Li <wanpen...@tencent.com>
Cc: Ingo Molnar <mi...@kernel.org>
---
 drivers/leds/trigger/ledtrig-activity.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/leds/trigger/ledtrig-activity.c 
b/drivers/leds/trigger/ledtrig-activity.c
index bcbf41c..b4a1f66 100644
--- a/drivers/leds/trigger/ledtrig-activity.c
+++ b/drivers/leds/trigger/ledtrig-activity.c
@@ -60,9 +60,12 @@ static void led_activity_function(struct timer_list *t)
        curr_used = 0;
 
        for_each_possible_cpu(i) {
-               curr_used += kcpustat_cpu(i).cpustat[CPUTIME_USER]
-                         +  kcpustat_cpu(i).cpustat[CPUTIME_NICE]
-                         +  kcpustat_cpu(i).cpustat[CPUTIME_SYSTEM]
+               u64 user, nice, sys, guest, guest_nice;
+
+               kcpustat_cputime(&kcpustat_cpu(i), i, &user, &nice, &sys,
+                                &guest, &guest_nice);
+
+               curr_used += user + nice + sys
                          +  kcpustat_cpu(i).cpustat[CPUTIME_SOFTIRQ]
                          +  kcpustat_cpu(i).cpustat[CPUTIME_IRQ];
                cpus++;
-- 
2.7.4

Reply via email to