diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-05-11 12:59:32 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-05-11 12:59:37 +0200 | 
| commit | 7961386fe9596e6bf03d09948a73c5df9653325b (patch) | |
| tree | 60fa2586a0d340ef8f7473956eef17430d8250c7 /kernel/time/timekeeping.c | |
| parent | aa47b7e0f89b9998dad4d1667447e8cb7703ff4e (diff) | |
| parent | 091bf7624d1c90cec9e578a18529f615213ff847 (diff) | |
| download | olio-linux-3.10-7961386fe9596e6bf03d09948a73c5df9653325b.tar.xz olio-linux-3.10-7961386fe9596e6bf03d09948a73c5df9653325b.zip  | |
Merge commit 'v2.6.30-rc5' into sched/core
Merge reason: sched/core was on .30-rc1 before, update to latest fixes
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/time/timekeeping.c')
| -rw-r--r-- | kernel/time/timekeeping.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 900f1b6598d..687dff49f6e 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -182,7 +182,7 @@ EXPORT_SYMBOL(do_settimeofday);   */  static void change_clocksource(void)  { -	struct clocksource *new; +	struct clocksource *new, *old;  	new = clocksource_get_next(); @@ -191,11 +191,16 @@ static void change_clocksource(void)  	clocksource_forward_now(); -	new->raw_time = clock->raw_time; +	if (clocksource_enable(new)) +		return; +	new->raw_time = clock->raw_time; +	old = clock;  	clock = new; +	clocksource_disable(old); +  	clock->cycle_last = 0; -	clock->cycle_last = clocksource_read(new); +	clock->cycle_last = clocksource_read(clock);  	clock->error = 0;  	clock->xtime_nsec = 0;  	clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH); @@ -292,6 +297,7 @@ void __init timekeeping_init(void)  	ntp_init();  	clock = clocksource_get_next(); +	clocksource_enable(clock);  	clocksource_calculate_interval(clock, NTP_INTERVAL_LENGTH);  	clock->cycle_last = clocksource_read(clock);  |