diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-27 12:15:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-27 12:15:31 -0400 |
commit | da8ac5e0fab11d0e84be4e49aaaa828c52d17097 (patch) | |
tree | eade52afcbb5eb31d2d8869fc66e8223a7681a6f /arch/s390/kernel/vtime.c | |
parent | 32f15dc5e6252f03aa2e04a2b140827a8297f21f (diff) | |
parent | cb629a01bb5bca951287e761c590a5686c6ca416 (diff) |
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: (38 commits)
[S390] SPIN_LOCK_UNLOCKED cleanup in drivers/s390
[S390] Clean up smp code in preparation for some larger changes.
[S390] Remove debugging junk.
[S390] Switch etr from tasklet to workqueue.
[S390] split page_test_and_clear_dirty.
[S390] Processor degradation notification.
[S390] vtime: cleanup per_cpu usage.
[S390] crypto: cleanup.
[S390] sclp: fix coding style.
[S390] vmlogrdr: stop IUCV connection in vmlogrdr_release.
[S390] sclp: initialize early.
[S390] ctc: kmalloc->kzalloc/casting cleanups.
[S390] zfcpdump support.
[S390] dasd: Add ipldev parameter.
[S390] dasd: Add sysfs attribute status and generate uevents.
[S390] Improved kernel stack overflow checking.
[S390] Get rid of console setup functions.
[S390] No execute support cleanup.
[S390] Minor fault path optimization.
[S390] Use generic bug.
...
Diffstat (limited to 'arch/s390/kernel/vtime.c')
-rw-r--r-- | arch/s390/kernel/vtime.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c index 9d5b02801b46..1e1a6ee2cac1 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c | |||
@@ -128,7 +128,7 @@ static inline void set_vtimer(__u64 expires) | |||
128 | S390_lowcore.last_update_timer = expires; | 128 | S390_lowcore.last_update_timer = expires; |
129 | 129 | ||
130 | /* store expire time for this CPU timer */ | 130 | /* store expire time for this CPU timer */ |
131 | per_cpu(virt_cpu_timer, smp_processor_id()).to_expire = expires; | 131 | __get_cpu_var(virt_cpu_timer).to_expire = expires; |
132 | } | 132 | } |
133 | #else | 133 | #else |
134 | static inline void set_vtimer(__u64 expires) | 134 | static inline void set_vtimer(__u64 expires) |
@@ -137,7 +137,7 @@ static inline void set_vtimer(__u64 expires) | |||
137 | asm volatile ("SPT %0" : : "m" (S390_lowcore.last_update_timer)); | 137 | asm volatile ("SPT %0" : : "m" (S390_lowcore.last_update_timer)); |
138 | 138 | ||
139 | /* store expire time for this CPU timer */ | 139 | /* store expire time for this CPU timer */ |
140 | per_cpu(virt_cpu_timer, smp_processor_id()).to_expire = expires; | 140 | __get_cpu_var(virt_cpu_timer).to_expire = expires; |
141 | } | 141 | } |
142 | #endif | 142 | #endif |
143 | 143 | ||
@@ -145,7 +145,7 @@ static void start_cpu_timer(void) | |||
145 | { | 145 | { |
146 | struct vtimer_queue *vt_list; | 146 | struct vtimer_queue *vt_list; |
147 | 147 | ||
148 | vt_list = &per_cpu(virt_cpu_timer, smp_processor_id()); | 148 | vt_list = &__get_cpu_var(virt_cpu_timer); |
149 | 149 | ||
150 | /* CPU timer interrupt is pending, don't reprogramm it */ | 150 | /* CPU timer interrupt is pending, don't reprogramm it */ |
151 | if (vt_list->idle & 1LL<<63) | 151 | if (vt_list->idle & 1LL<<63) |
@@ -159,7 +159,7 @@ static void stop_cpu_timer(void) | |||
159 | { | 159 | { |
160 | struct vtimer_queue *vt_list; | 160 | struct vtimer_queue *vt_list; |
161 | 161 | ||
162 | vt_list = &per_cpu(virt_cpu_timer, smp_processor_id()); | 162 | vt_list = &__get_cpu_var(virt_cpu_timer); |
163 | 163 | ||
164 | /* nothing to do */ | 164 | /* nothing to do */ |
165 | if (list_empty(&vt_list->list)) { | 165 | if (list_empty(&vt_list->list)) { |
@@ -219,7 +219,7 @@ static void do_callbacks(struct list_head *cb_list) | |||
219 | if (list_empty(cb_list)) | 219 | if (list_empty(cb_list)) |
220 | return; | 220 | return; |
221 | 221 | ||
222 | vt_list = &per_cpu(virt_cpu_timer, smp_processor_id()); | 222 | vt_list = &__get_cpu_var(virt_cpu_timer); |
223 | 223 | ||
224 | list_for_each_entry_safe(event, tmp, cb_list, entry) { | 224 | list_for_each_entry_safe(event, tmp, cb_list, entry) { |
225 | fn = event->function; | 225 | fn = event->function; |
@@ -244,7 +244,6 @@ static void do_callbacks(struct list_head *cb_list) | |||
244 | */ | 244 | */ |
245 | static void do_cpu_timer_interrupt(__u16 error_code) | 245 | static void do_cpu_timer_interrupt(__u16 error_code) |
246 | { | 246 | { |
247 | int cpu; | ||
248 | __u64 next, delta; | 247 | __u64 next, delta; |
249 | struct vtimer_queue *vt_list; | 248 | struct vtimer_queue *vt_list; |
250 | struct vtimer_list *event, *tmp; | 249 | struct vtimer_list *event, *tmp; |
@@ -253,8 +252,7 @@ static void do_cpu_timer_interrupt(__u16 error_code) | |||
253 | struct list_head cb_list; | 252 | struct list_head cb_list; |
254 | 253 | ||
255 | INIT_LIST_HEAD(&cb_list); | 254 | INIT_LIST_HEAD(&cb_list); |
256 | cpu = smp_processor_id(); | 255 | vt_list = &__get_cpu_var(virt_cpu_timer); |
257 | vt_list = &per_cpu(virt_cpu_timer, cpu); | ||
258 | 256 | ||
259 | /* walk timer list, fire all expired events */ | 257 | /* walk timer list, fire all expired events */ |
260 | spin_lock(&vt_list->lock); | 258 | spin_lock(&vt_list->lock); |
@@ -534,7 +532,7 @@ void init_cpu_vtimer(void) | |||
534 | /* enable cpu timer interrupts */ | 532 | /* enable cpu timer interrupts */ |
535 | __ctl_set_bit(0,10); | 533 | __ctl_set_bit(0,10); |
536 | 534 | ||
537 | vt_list = &per_cpu(virt_cpu_timer, smp_processor_id()); | 535 | vt_list = &__get_cpu_var(virt_cpu_timer); |
538 | INIT_LIST_HEAD(&vt_list->list); | 536 | INIT_LIST_HEAD(&vt_list->list); |
539 | spin_lock_init(&vt_list->lock); | 537 | spin_lock_init(&vt_list->lock); |
540 | vt_list->to_expire = 0; | 538 | vt_list->to_expire = 0; |