diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-29 17:16:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-29 17:16:48 -0400 |
commit | bcd550745fc54f789c14e7526e0633222c505faa (patch) | |
tree | c3fe11a6503b7ffdd4406a9fece5c40b3e2a3f6d /arch/ia64/kernel | |
parent | 93f378883cecb9dcb2cf5b51d9d24175906659da (diff) | |
parent | 646783a389828e76e813f50791f7999429c821bc (diff) |
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer core updates from Thomas Gleixner.
* 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
ia64: vsyscall: Add missing paranthesis
alarmtimer: Don't call rtc_timer_init() when CONFIG_RTC_CLASS=n
x86: vdso: Put declaration before code
x86-64: Inline vdso clock_gettime helpers
x86-64: Simplify and optimize vdso clock_gettime monotonic variants
kernel-time: fix s/then/than/ spelling errors
time: remove no_sync_cmos_clock
time: Avoid scary backtraces when warning of > 11% adj
alarmtimer: Make sure we initialize the rtctimer
ntp: Fix leap-second hrtimer livelock
x86, tsc: Skip refined tsc calibration on systems with reliable TSC
rtc: Provide flag for rtc devices that don't support UIE
ia64: vsyscall: Use seqcount instead of seqlock
x86: vdso: Use seqcount instead of seqlock
x86: vdso: Remove bogus locking in update_vsyscall_tz()
time: Remove bogus comments
time: Fix change_clocksource locking
time: x86: Fix race switching from vsyscall to non-vsyscall clock
Diffstat (limited to 'arch/ia64/kernel')
-rw-r--r-- | arch/ia64/kernel/asm-offsets.c | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/fsys.S | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/fsyscall_gtod_data.h | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/time.c | 10 |
4 files changed, 7 insertions, 11 deletions
diff --git a/arch/ia64/kernel/asm-offsets.c b/arch/ia64/kernel/asm-offsets.c index af5650169043..a48bd9a9927b 100644 --- a/arch/ia64/kernel/asm-offsets.c +++ b/arch/ia64/kernel/asm-offsets.c | |||
@@ -269,8 +269,8 @@ void foo(void) | |||
269 | BLANK(); | 269 | BLANK(); |
270 | 270 | ||
271 | /* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */ | 271 | /* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */ |
272 | DEFINE(IA64_GTOD_LOCK_OFFSET, | 272 | DEFINE(IA64_GTOD_SEQ_OFFSET, |
273 | offsetof (struct fsyscall_gtod_data_t, lock)); | 273 | offsetof (struct fsyscall_gtod_data_t, seq)); |
274 | DEFINE(IA64_GTOD_WALL_TIME_OFFSET, | 274 | DEFINE(IA64_GTOD_WALL_TIME_OFFSET, |
275 | offsetof (struct fsyscall_gtod_data_t, wall_time)); | 275 | offsetof (struct fsyscall_gtod_data_t, wall_time)); |
276 | DEFINE(IA64_GTOD_MONO_TIME_OFFSET, | 276 | DEFINE(IA64_GTOD_MONO_TIME_OFFSET, |
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S index f15d8601827f..cc26edac0ec6 100644 --- a/arch/ia64/kernel/fsys.S +++ b/arch/ia64/kernel/fsys.S | |||
@@ -173,7 +173,7 @@ ENTRY(fsys_set_tid_address) | |||
173 | FSYS_RETURN | 173 | FSYS_RETURN |
174 | END(fsys_set_tid_address) | 174 | END(fsys_set_tid_address) |
175 | 175 | ||
176 | #if IA64_GTOD_LOCK_OFFSET !=0 | 176 | #if IA64_GTOD_SEQ_OFFSET !=0 |
177 | #error fsys_gettimeofday incompatible with changes to struct fsyscall_gtod_data_t | 177 | #error fsys_gettimeofday incompatible with changes to struct fsyscall_gtod_data_t |
178 | #endif | 178 | #endif |
179 | #if IA64_ITC_JITTER_OFFSET !=0 | 179 | #if IA64_ITC_JITTER_OFFSET !=0 |
diff --git a/arch/ia64/kernel/fsyscall_gtod_data.h b/arch/ia64/kernel/fsyscall_gtod_data.h index 57d2ee6c83e1..146b15b5fec3 100644 --- a/arch/ia64/kernel/fsyscall_gtod_data.h +++ b/arch/ia64/kernel/fsyscall_gtod_data.h | |||
@@ -6,7 +6,7 @@ | |||
6 | */ | 6 | */ |
7 | 7 | ||
8 | struct fsyscall_gtod_data_t { | 8 | struct fsyscall_gtod_data_t { |
9 | seqlock_t lock; | 9 | seqcount_t seq; |
10 | struct timespec wall_time; | 10 | struct timespec wall_time; |
11 | struct timespec monotonic_time; | 11 | struct timespec monotonic_time; |
12 | cycle_t clk_mask; | 12 | cycle_t clk_mask; |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index aa94bdda9de8..ecc904b33c5f 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -34,9 +34,7 @@ | |||
34 | 34 | ||
35 | static cycle_t itc_get_cycles(struct clocksource *cs); | 35 | static cycle_t itc_get_cycles(struct clocksource *cs); |
36 | 36 | ||
37 | struct fsyscall_gtod_data_t fsyscall_gtod_data = { | 37 | struct fsyscall_gtod_data_t fsyscall_gtod_data; |
38 | .lock = __SEQLOCK_UNLOCKED(fsyscall_gtod_data.lock), | ||
39 | }; | ||
40 | 38 | ||
41 | struct itc_jitter_data_t itc_jitter_data; | 39 | struct itc_jitter_data_t itc_jitter_data; |
42 | 40 | ||
@@ -459,9 +457,7 @@ void update_vsyscall_tz(void) | |||
459 | void update_vsyscall(struct timespec *wall, struct timespec *wtm, | 457 | void update_vsyscall(struct timespec *wall, struct timespec *wtm, |
460 | struct clocksource *c, u32 mult) | 458 | struct clocksource *c, u32 mult) |
461 | { | 459 | { |
462 | unsigned long flags; | 460 | write_seqcount_begin(&fsyscall_gtod_data.seq); |
463 | |||
464 | write_seqlock_irqsave(&fsyscall_gtod_data.lock, flags); | ||
465 | 461 | ||
466 | /* copy fsyscall clock data */ | 462 | /* copy fsyscall clock data */ |
467 | fsyscall_gtod_data.clk_mask = c->mask; | 463 | fsyscall_gtod_data.clk_mask = c->mask; |
@@ -484,6 +480,6 @@ void update_vsyscall(struct timespec *wall, struct timespec *wtm, | |||
484 | fsyscall_gtod_data.monotonic_time.tv_sec++; | 480 | fsyscall_gtod_data.monotonic_time.tv_sec++; |
485 | } | 481 | } |
486 | 482 | ||
487 | write_sequnlock_irqrestore(&fsyscall_gtod_data.lock, flags); | 483 | write_seqcount_end(&fsyscall_gtod_data.seq); |
488 | } | 484 | } |
489 | 485 | ||