diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-26 19:05:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-26 19:05:42 -0400 |
commit | 6671de344cd661453bbee3cfde5574a974332436 (patch) | |
tree | 826873ae0180eea53b8fcc6e41938b67c656ba3f /kernel/time/clockevents.c | |
parent | 831576fe40f4175e0767623cffa4aeb28157943a (diff) | |
parent | 7c526e1fef8d604a9ec022d9145bba5dbfe40a11 (diff) |
Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (26 commits)
posix timers: fix RLIMIT_CPU && fork()
time: ntp: fix bug in ntp_update_offset() & do_adjtimex(), fix
time: ntp: clean up second_overflow()
time: ntp: simplify ntp_tick_adj calculations
time: ntp: make 64-bit constants more robust
time: ntp: refactor do_adjtimex() some more
time: ntp: refactor do_adjtimex()
time: ntp: fix bug in ntp_update_offset() & do_adjtimex()
time: ntp: micro-optimize ntp_update_offset()
time: ntp: simplify ntp_update_offset_fll()
time: ntp: refactor and clean up ntp_update_offset()
time: ntp: refactor up ntp_update_frequency()
time: ntp: clean up ntp_update_frequency()
time: ntp: simplify the MAX_TICKADJ_SCALED definition
time: ntp: simplify the second_overflow() code flow
time: ntp: clean up kernel/time/ntp.c
x86: hpet: stop HPET_COUNTER when programming periodic mode
x86: hpet: provide separate functions to stop and start the counter
x86: hpet: print HPET registers during setup (if hpet=verbose is used)
time: apply NTP frequency/tick changes immediately
...
Diffstat (limited to 'kernel/time/clockevents.c')
-rw-r--r-- | kernel/time/clockevents.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c index ea2f48af83c..d13be216a79 100644 --- a/kernel/time/clockevents.c +++ b/kernel/time/clockevents.c | |||
@@ -68,6 +68,17 @@ void clockevents_set_mode(struct clock_event_device *dev, | |||
68 | if (dev->mode != mode) { | 68 | if (dev->mode != mode) { |
69 | dev->set_mode(mode, dev); | 69 | dev->set_mode(mode, dev); |
70 | dev->mode = mode; | 70 | dev->mode = mode; |
71 | |||
72 | /* | ||
73 | * A nsec2cyc multiplicator of 0 is invalid and we'd crash | ||
74 | * on it, so fix it up and emit a warning: | ||
75 | */ | ||
76 | if (mode == CLOCK_EVT_MODE_ONESHOT) { | ||
77 | if (unlikely(!dev->mult)) { | ||
78 | dev->mult = 1; | ||
79 | WARN_ON(1); | ||
80 | } | ||
81 | } | ||
71 | } | 82 | } |
72 | } | 83 | } |
73 | 84 | ||
@@ -168,15 +179,6 @@ void clockevents_register_device(struct clock_event_device *dev) | |||
168 | BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED); | 179 | BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED); |
169 | BUG_ON(!dev->cpumask); | 180 | BUG_ON(!dev->cpumask); |
170 | 181 | ||
171 | /* | ||
172 | * A nsec2cyc multiplicator of 0 is invalid and we'd crash | ||
173 | * on it, so fix it up and emit a warning: | ||
174 | */ | ||
175 | if (unlikely(!dev->mult)) { | ||
176 | dev->mult = 1; | ||
177 | WARN_ON(1); | ||
178 | } | ||
179 | |||
180 | spin_lock(&clockevents_lock); | 182 | spin_lock(&clockevents_lock); |
181 | 183 | ||
182 | list_add(&dev->list, &clockevent_devices); | 184 | list_add(&dev->list, &clockevent_devices); |