Commit 07454bfff151d2465ada809bbaddf3548cc1097c

Authored by Thomas Gleixner
1 parent 2165f631f0

clockevents: check broadcast tick device not the clock events device

Impact: jiffies increment too fast.

Hugh Dickins noted that with NOHZ=n and HIGHRES=n jiffies get
incremented too fast. The reason is a wrong check in the broadcast
enter/exit code, which keeps the local apic timer in periodic mode
when the switch happens.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

Showing 1 changed file with 4 additions and 2 deletions Side-by-side Diff

kernel/time/tick-broadcast.c
... ... @@ -235,7 +235,8 @@
235 235 case CLOCK_EVT_NOTIFY_BROADCAST_FORCE:
236 236 if (!cpu_isset(cpu, tick_broadcast_mask)) {
237 237 cpu_set(cpu, tick_broadcast_mask);
238   - if (bc->mode == TICKDEV_MODE_PERIODIC)
  238 + if (tick_broadcast_device.mode ==
  239 + TICKDEV_MODE_PERIODIC)
239 240 clockevents_shutdown(dev);
240 241 }
241 242 if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE)
... ... @@ -245,7 +246,8 @@
245 246 if (!tick_broadcast_force &&
246 247 cpu_isset(cpu, tick_broadcast_mask)) {
247 248 cpu_clear(cpu, tick_broadcast_mask);
248   - if (bc->mode == TICKDEV_MODE_PERIODIC)
  249 + if (tick_broadcast_device.mode ==
  250 + TICKDEV_MODE_PERIODIC)
249 251 tick_setup_periodic(dev, 0);
250 252 }
251 253 break;