History

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.

Thomas Gleixner committed 18 years ago

Commit 07454bf1 parent 2165f631 file · +4 −2Browse files

Showing the changes to kernel (1 of 1 file). Show all

Unified · Split

kernel/time/tick-broadcast.c+4−2
@@ -235,7 +235,8 @@ static void tick_do_broadcast_on_off(void *why) · 234 unmodified lines
235 case CLOCK_EVT_NOTIFY_BROADCAST_FORCE:235 case CLOCK_EVT_NOTIFY_BROADCAST_FORCE:
236 if (!cpu_isset(cpu, tick_broadcast_mask)) {236 if (!cpu_isset(cpu, tick_broadcast_mask)) {
237 cpu_set(cpu, tick_broadcast_mask);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 clockevents_shutdown(dev);240 clockevents_shutdown(dev);
240 }241 }
241 if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE)242 if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE)
@@ -245,7 +246,8 @@ static void tick_do_broadcast_on_off(void *why) · 3 unmodified lines
245 if (!tick_broadcast_force &&246 if (!tick_broadcast_force &&
246 cpu_isset(cpu, tick_broadcast_mask)) {247 cpu_isset(cpu, tick_broadcast_mask)) {
247 cpu_clear(cpu, tick_broadcast_mask);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 tick_setup_periodic(dev, 0);251 tick_setup_periodic(dev, 0);
250 }252 }
251 break;253 break;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t