diff options
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 | ||