[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20111207150956.52d41fd8580de3b66abd5d2d@canb.auug.org.au>
Date: Wed, 7 Dec 2011 15:09:56 +1100
From: Stephen Rothwell <sfr@...b.auug.org.au>
To: Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...e.hu>,
"H. Peter Anvin" <hpa@...or.com>,
Peter Zijlstra <peterz@...radead.org>
Cc: linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
Glauber Costa <glommer@...allels.com>,
Martin Schwidefsky <schwidefsky@...ibm.com>
Subject: linux-next: manual merge of the tip tree with the cputime tree
Hi all,
Today's linux-next merge of the tip tree got conflicts in
kernel/sched/core.c, fs/proc/uptime.c, fs/proc/stat.c,
drivers/cpufreq/cpufreq_conservative.c,
drivers/cpufreq/cpufreq_ondemand.c and drivers/macintosh/rack-meter.c
between commit c5927fe412bf ("[S390] cputime: add sparse checking and
cleanup") from the cputime tree and commit 3292beb340c7
("sched/accounting: Change cpustat fields to an array") from the tip tree.
I fixed it up (I hope - see below) and can carry the fix as necessary. (I
used the tip version of fs/proc/uptime.c, fs/proc/stat.c and
drivers/macintosh/rack-meter.c).
--
Cheers,
Stephen Rothwell sfr@...b.auug.org.au
diff --cc kernel/sched/core.c
index 18cad44,3c5b21e..0000000
--- 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;
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.
diff --cc drivers/cpufreq/cpufreq_conservative.c
index 7f31a03,118bff7..0000000
--- 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 07cffe2,f3d327c..0000000
--- 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)
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists