Commit 07454bfff151d2465ada809bbaddf3548cc1097c
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; |