1. Feb 26, 2024
  2. Feb 23, 2024
  3. Feb 21, 2024
  4. Feb 19, 2024
  5. Feb 18, 2024
  6. Feb 13, 2024
  7. Feb 01, 2024
  8. Jan 22, 2024
  9. Jan 19, 2024
    • Heiko Carstens's avatar
      tick-sched: Fix idle and iowait sleeptime accounting vs CPU hotplug · 71fee48f
      Heiko Carstens authored
      When offlining and onlining CPUs the overall reported idle and iowait
      times as reported by /proc/stat jump backward and forward:
      
      cpu  132 0 176 225249 47 6 6 21 0 0
      cpu0 80 0 115 112575 33 3 4 18 0 0
      cpu1 52 0 60 112673 13 3 1 2 0 0
      
      cpu  133 0 177 226681 47 6 6 21 0 0
      cpu0 80 0 116 113387 33 3 4 18 0 0
      
      cpu  133 0 178 114431 33 6 6 21 0 0 <---- jump backward
      cpu0 80 0 116 114247 33 3 4 18 0 0
      cpu1 52 0 61 183 0 3 1 2 0 0        <---- idle + iowait start with 0
      
      cpu  133 0 178 228956 47 6 6 21 0 0 <---- jump forward
      cpu0 81 0 117 114929 33 3 4 18 0 0
      
      Reason for this is that get_idle_time() in fs/proc/stat.c has different
      sources for both values depending on if a CPU is online or offline:
      
      - if a CPU is online the values may be taken from its per cpu
        tick_cpu_sched structure
      
      - if a CPU is offline the values are taken from its per cpu cpustat
        structure
      
      The problem is that the per cpu tick_cpu_sched structure is set to zero on
      CPU offline. See tick_cancel_sched_timer() in kernel/time/tick-sched.c.
      
      Therefore when a CPU is brought offline and online afterwards both its idle
      and iowait sleeptime will be zero, causing a jump backward in total system
      idle and iowait sleeptime. In a similar way if a CPU is then brought
      offline again the total idle and iowait sleeptimes will jump forward.
      
      It looks like this behavior was introduced with commit 4b0c0f29
      ("tick: Cleanup NOHZ per cpu data on cpu down").
      
      This was only noticed now on s390, since we switched to generic idle time
      reporting with commit be76ea61 ("s390/idle: remove arch_cpu_idle_time()
      and corresponding code").
      
      Fix this by preserving the values of idle_sleeptime and iowait_sleeptime
      members of the per-cpu tick_sched structure on CPU hotplug.
      
      Fixes: 4b0c0f29
      
       ("tick: Cleanup NOHZ per cpu data on cpu down")
      Reported-by: default avatarGerald Schaefer <gerald.schaefer@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarFrederic Weisbecker <frederic@kernel.org>
      Link: https://lore.kernel.org/r/20240115163555.1004144-1-hca@linux.ibm.com
      71fee48f
    • Thomas Gleixner's avatar
      Merge tag 'timers-v6.8-rc1' of http://git.linaro.org/people/daniel.lezcano/linux into timers/core · 80fe58cc
      Thomas Gleixner authored
      Pull clockevent/clocksource updates from Daniel Lezcano:
      
         - Fixed error handling at probe time and uninitialized return code on
           ep93xx (Arnd Bergman)
      
         - Fixed some kerneldoc warning on Cadence TTC (Randy Dunlap)
      
         - Fixed kerneldoc warning on Timer TI DM (Tony Lindgren)
      
         - Handle interrupt disabling when shutting down the timer on RISC-V
           timer (Joshua Yeong)
      
         - Add compatible string for the StarFive JH8100 clint (Sia Jee Heng)
      
         - Separate mtime and mtimecmp registers in DT bindings (Inochi Amaoto)
      
      Link: https://lore.kernel.org/lkml/0f07af92-e4b2-48de-88a6-dd9aa9e49743@linaro.org
      80fe58cc
  10. Dec 27, 2023
  11. Dec 20, 2023
  12. Nov 22, 2023
  13. Nov 20, 2023