Now that we have a vtime safe kcpustat accessor, use it to fix frozen kcpustat values on nohz_full CPUs.
Reported-by: Yauheni Kaliuta <[email protected]> Signed-off-by: Frederic Weisbecker <[email protected]> Cc: Yauheni Kaliuta <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Wanpeng Li <[email protected]> Cc: Ingo Molnar <[email protected]> --- 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

