X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fs390%2Fkernel%2Ftime.c;h=8f279421646f6da5809c9e7fd6b32c076b6e4551;hb=9e1bf581d67d87a1d7fc0ea500729e3a03643a26;hp=2fea300f4b479c4874829a1149affc1f69d36b32;hpb=8d40237c730b8be87c1b80a5d96b9c603fefa829;p=linux-2.6.git diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index 2fea300f4..8f2794216 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c @@ -233,10 +233,8 @@ void account_ticks(struct pt_regs *regs) while (ticks--) update_process_times(user_mode(regs)); #else - while (ticks--) { + while (ticks--) do_timer(regs); - update_process_times(user_mode(regs)); - } #endif s390_do_profile(regs); } @@ -260,21 +258,18 @@ static inline void stop_hz_timer(void) if (sysctl_hz_timer != 0) return; - cpu_set(smp_processor_id(), nohz_cpu_mask); - /* * Leave the clock comparator set up for the next timer * tick if either rcu or a softirq is pending. */ - if (rcu_pending(smp_processor_id()) || local_softirq_pending()) { - cpu_clear(smp_processor_id(), nohz_cpu_mask); + if (rcu_pending(smp_processor_id()) || local_softirq_pending()) return; - } /* * This cpu is going really idle. Set up the clock comparator * for the next event. */ + cpu_set(smp_processor_id(), nohz_cpu_mask); timer = (__u64) (next_timer_interrupt() - jiffies) + jiffies_64; timer = jiffies_timer_cc + timer * CLK_TICKS_PER_JIFFY; asm volatile ("SCKC %0" : : "m" (timer));