From: Stephen Rothwell Date: Tue, 13 Dec 2011 04:58:32 +0000 (+1100) Subject: Merge remote-tracking branch 'tip/auto-latest' X-Git-Tag: next-20111213~25 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=3fa4b994b5ce62c53449d1e24916be25393aba0d;p=karo-tx-linux.git Merge remote-tracking branch 'tip/auto-latest' Conflicts: drivers/cpufreq/cpufreq_conservative.c drivers/cpufreq/cpufreq_ondemand.c drivers/macintosh/rack-meter.c fs/proc/stat.c fs/proc/uptime.c kernel/sched/core.c --- 3fa4b994b5ce62c53449d1e24916be25393aba0d diff --cc drivers/cpufreq/cpufreq_conservative.c index 7f31a031c0b5,118bff73fed3..5d2ee436b146 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c @@@ -95,26 -95,26 +95,26 @@@ static struct dbs_tuners .freq_step = 5, }; - static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu, - cputime64_t *wall) + static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall) { - cputime64_t idle_time; + u64 idle_time; cputime64_t cur_wall_time; - cputime64_t busy_time; + u64 busy_time; cur_wall_time = jiffies64_to_cputime64(get_jiffies_64()); - busy_time = kstat_cpu(cpu).cpustat.user; - busy_time += kstat_cpu(cpu).cpustat.system; - busy_time += kstat_cpu(cpu).cpustat.irq; - busy_time += kstat_cpu(cpu).cpustat.softirq; - busy_time += kstat_cpu(cpu).cpustat.steal; - busy_time += kstat_cpu(cpu).cpustat.nice; + busy_time = kcpustat_cpu(cpu).cpustat[CPUTIME_USER] + + kcpustat_cpu(cpu).cpustat[CPUTIME_SYSTEM]; + + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_IRQ]; + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SOFTIRQ]; + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL]; + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_NICE]; - idle_time = cputime64_sub(cur_wall_time, busy_time); + idle_time = cur_wall_time - busy_time; if (wall) - *wall = (cputime64_t)jiffies_to_usecs(cur_wall_time); + *wall = jiffies_to_usecs(cur_wall_time); - return (cputime64_t)jiffies_to_usecs(idle_time); + return jiffies_to_usecs(idle_time); } static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall) diff --cc drivers/cpufreq/cpufreq_ondemand.c index 17bb5b167a86,f3d327cee43f..25f167824853 --- a/drivers/cpufreq/cpufreq_ondemand.c +++ b/drivers/cpufreq/cpufreq_ondemand.c @@@ -119,26 -119,26 +119,26 @@@ static struct dbs_tuners .powersave_bias = 0, }; - static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu, - cputime64_t *wall) + static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall) { - cputime64_t idle_time; + u64 idle_time; cputime64_t cur_wall_time; - cputime64_t busy_time; + u64 busy_time; cur_wall_time = jiffies64_to_cputime64(get_jiffies_64()); - busy_time = kstat_cpu(cpu).cpustat.user; - busy_time += kstat_cpu(cpu).cpustat.system; - busy_time += kstat_cpu(cpu).cpustat.irq; - busy_time += kstat_cpu(cpu).cpustat.softirq; - busy_time += kstat_cpu(cpu).cpustat.steal; - busy_time += kstat_cpu(cpu).cpustat.nice; + busy_time = kcpustat_cpu(cpu).cpustat[CPUTIME_USER] + + kcpustat_cpu(cpu).cpustat[CPUTIME_SYSTEM]; + + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_IRQ]; + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SOFTIRQ]; + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL]; + busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_NICE]; - idle_time = cputime64_sub(cur_wall_time, busy_time); + idle_time = cur_wall_time - busy_time; if (wall) - *wall = (cputime64_t)jiffies_to_usecs(cur_wall_time); + *wall = jiffies_to_usecs(cur_wall_time); - return (cputime64_t)jiffies_to_usecs(idle_time); + return jiffies_to_usecs(idle_time); } static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall) diff --cc kernel/sched/core.c index 18cad4467e61,3c5b21e2ef20..918a21c8ebe7 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@@ -2166,7 -935,7 +935,7 @@@ static int irqtime_account_hi_update(vo local_irq_save(flags); latest_ns = this_cpu_read(cpu_hardirq_time); - if (nsecs_to_cputime64(latest_ns) > cpustat->irq) - if (cputime64_gt(nsecs_to_cputime64(latest_ns), cpustat[CPUTIME_IRQ])) ++ if (nsecs_to_cputime64(latest_ns) > cpustat[CPUTIME_IRQ]) ret = 1; local_irq_restore(flags); return ret; @@@ -2181,7 -950,7 +950,7 @@@ static int irqtime_account_si_update(vo local_irq_save(flags); latest_ns = this_cpu_read(cpu_softirq_time); - if (nsecs_to_cputime64(latest_ns) > cpustat->softirq) - if (cputime64_gt(nsecs_to_cputime64(latest_ns), cpustat[CPUTIME_SOFTIRQ])) ++ if (nsecs_to_cputime64(latest_ns) > cpustat[CPUTIME_SOFTIRQ]) ret = 1; local_irq_restore(flags); return ret; @@@ -3867,20 -2633,18 +2633,18 @@@ static inline void task_group_account_f void account_user_time(struct task_struct *p, cputime_t cputime, cputime_t cputime_scaled) { - struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat; + int index; /* Add user time to process. */ - p->utime = cputime_add(p->utime, cputime); - p->utimescaled = cputime_add(p->utimescaled, cputime_scaled); + p->utime += cputime; + p->utimescaled += cputime_scaled; account_group_user_time(p, cputime); + index = (TASK_NICE(p) > 0) ? CPUTIME_NICE : CPUTIME_USER; + /* Add user time to cpustat. */ - if (TASK_NICE(p) > 0) - cpustat->nice += (__force cputime64_t) cputime; - else - cpustat->user += (__force cputime64_t) cputime; - task_group_account_field(p, index, cputime); ++ task_group_account_field(p, index, (__force cputime64_t) cputime); - cpuacct_update_stats(p, CPUACCT_STAT_USER, cputime); /* Account for user time used */ acct_update_integrals(p); } @@@ -3894,21 -2658,24 +2658,21 @@@ static void account_guest_time(struct task_struct *p, cputime_t cputime, cputime_t cputime_scaled) { - struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat; - u64 tmp; + u64 *cpustat = kcpustat_this_cpu->cpustat; - tmp = cputime_to_cputime64(cputime); - /* Add guest time to process. */ - p->utime = cputime_add(p->utime, cputime); - p->utimescaled = cputime_add(p->utimescaled, cputime_scaled); + p->utime += cputime; + p->utimescaled += cputime_scaled; account_group_user_time(p, cputime); - p->gtime = cputime_add(p->gtime, cputime); + p->gtime += cputime; /* Add guest time to cpustat. */ if (TASK_NICE(p) > 0) { - cpustat->nice += (__force cputime64_t) cputime; - cpustat->guest_nice += (__force cputime64_t) cputime; - cpustat[CPUTIME_NICE] += tmp; - cpustat[CPUTIME_GUEST_NICE] += tmp; ++ cpustat[CPUTIME_NICE] += (__force cputime64_t) cputime; ++ cpustat[CPUTIME_GUEST_NICE] += (__force cputime64_t) cputime; } else { - cpustat->user += (__force cputime64_t) cputime; - cpustat->guest += (__force cputime64_t) cputime; - cpustat[CPUTIME_USER] += tmp; - cpustat[CPUTIME_GUEST] += tmp; ++ cpustat[CPUTIME_USER] += (__force cputime64_t) cputime; ++ cpustat[CPUTIME_GUEST] += (__force cputime64_t) cputime; } } @@@ -3921,16 -2688,15 +2685,15 @@@ */ static inline void __account_system_time(struct task_struct *p, cputime_t cputime, - cputime_t cputime_scaled, cputime64_t *target_cputime64) + cputime_t cputime_scaled, int index) { /* Add system time to process. */ - p->stime = cputime_add(p->stime, cputime); - p->stimescaled = cputime_add(p->stimescaled, cputime_scaled); + p->stime += cputime; + p->stimescaled += cputime_scaled; account_group_system_time(p, cputime); /* Add system time to cpustat. */ - *target_cputime64 += (__force cputime64_t) cputime; - cpuacct_update_stats(p, CPUACCT_STAT_SYSTEM, cputime); - task_group_account_field(p, index, cputime); ++ task_group_account_field(p, index, (__force cputime64_t) cputime); /* Account for system time used */ acct_update_integrals(p); @@@ -3970,9 -2735,10 +2732,9 @@@ void account_system_time(struct task_st */ void account_steal_time(cputime_t cputime) { - struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat; + u64 *cpustat = kcpustat_this_cpu->cpustat; - u64 cputime64 = cputime_to_cputime64(cputime); - cpustat->steal += (__force cputime64_t) cputime; - cpustat[CPUTIME_STEAL] += cputime64; ++ cpustat[CPUTIME_STEAL] += (__force cputime64_t) cputime; } /* @@@ -3981,13 -2747,14 +2743,13 @@@ */ void account_idle_time(cputime_t cputime) { - struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat; + u64 *cpustat = kcpustat_this_cpu->cpustat; - u64 cputime64 = cputime_to_cputime64(cputime); struct rq *rq = this_rq(); if (atomic_read(&rq->nr_iowait) > 0) - cpustat->iowait += (__force cputime64_t) cputime; - cpustat[CPUTIME_IOWAIT] += cputime64; ++ cpustat[CPUTIME_IOWAIT] += (__force cputime64_t) cputime; else - cpustat->idle += (__force cputime64_t) cputime; - cpustat[CPUTIME_IDLE] += cputime64; ++ cpustat[CPUTIME_IDLE] += (__force cputime64_t) cputime; } static __always_inline bool steal_account_process_tick(void) @@@ -4037,15 -2804,16 +2799,15 @@@ static void irqtime_account_process_tic struct rq *rq) { cputime_t one_jiffy_scaled = cputime_to_scaled(cputime_one_jiffy); - struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat; - u64 tmp = cputime_to_cputime64(cputime_one_jiffy); + u64 *cpustat = kcpustat_this_cpu->cpustat; if (steal_account_process_tick()) return; if (irqtime_account_hi_update()) { - cpustat->irq += (__force cputime64_t) cputime_one_jiffy; - cpustat[CPUTIME_IRQ] += tmp; ++ cpustat[CPUTIME_IRQ] += (__force cputime64_t) cputime_one_jiffy; } else if (irqtime_account_si_update()) { - cpustat->softirq += (__force cputime64_t) cputime_one_jiffy; - cpustat[CPUTIME_SOFTIRQ] += tmp; ++ cpustat[CPUTIME_SOFTIRQ] += (__force cputime64_t) cputime_one_jiffy; } else if (this_cpu_ksoftirqd() == p) { /* * ksoftirqd time do not get accounted in cpu_softirq_time.