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/macintosh/rack-meter.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/macintosh/rack-meter.c b/drivers/macintosh/rack-meter.c index 1f29d24..1936e0ec 100644 --- a/drivers/macintosh/rack-meter.c +++ b/drivers/macintosh/rack-meter.c @@ -83,13 +83,19 @@ static int rackmeter_ignore_nice; */ static inline u64 get_cpu_idle_time(unsigned int cpu) { + struct kernel_cpustat *kcpustat = &kcpustat_cpu(cpu); u64 retval; - retval = kcpustat_cpu(cpu).cpustat[CPUTIME_IDLE] + - kcpustat_cpu(cpu).cpustat[CPUTIME_IOWAIT]; + retval = kcpustat->cpustat[CPUTIME_IDLE] + + kcpustat->cpustat[CPUTIME_IOWAIT]; - if (rackmeter_ignore_nice) - retval += kcpustat_cpu(cpu).cpustat[CPUTIME_NICE]; + if (rackmeter_ignore_nice) { + u64 user, nice, sys, guest, guest_nice; + + kcpustat_cputime(kcpustat, cpu, &user, &nice, &sys, + &guest, &guest_nice); + retval += nice; + } return retval; } -- 2.7.4