diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-10-04 10:51:07 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-10-04 10:51:07 +0200 |
commit | 07454bfff151d2465ada809bbaddf3548cc1097c (patch) | |
tree | fae1802b291e57c0376f9deddcbd8bf539587940 | |
parent | 2165f631f0e1d4e9a1ee425ef05cb727352285e0 (diff) | |
download | linux-07454bfff151d2465ada809bbaddf3548cc1097c.tar.gz linux-07454bfff151d2465ada809bbaddf3548cc1097c.tar.bz2 linux-07454bfff151d2465ada809bbaddf3548cc1097c.zip |
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>
-rw-r--r-- | kernel/time/tick-broadcast.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index bd7034542399..cb01cd8f919b 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -235,7 +235,8 @@ static void tick_do_broadcast_on_off(void *why) case CLOCK_EVT_NOTIFY_BROADCAST_FORCE: if (!cpu_isset(cpu, tick_broadcast_mask)) { cpu_set(cpu, tick_broadcast_mask); - if (bc->mode == TICKDEV_MODE_PERIODIC) + if (tick_broadcast_device.mode == + TICKDEV_MODE_PERIODIC) clockevents_shutdown(dev); } if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE) @@ -245,7 +246,8 @@ static void tick_do_broadcast_on_off(void *why) if (!tick_broadcast_force && cpu_isset(cpu, tick_broadcast_mask)) { cpu_clear(cpu, tick_broadcast_mask); - if (bc->mode == TICKDEV_MODE_PERIODIC) + if (tick_broadcast_device.mode == + TICKDEV_MODE_PERIODIC) tick_setup_periodic(dev, 0); } break; |