lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ