From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH] eliminate unnecessary NR_CPUS-sized arrays from 't' key handler Date: Thu, 08 Jul 2010 16:36:05 +0100 Message-ID: <4C360C85020000780000A48D@vpn.id2.novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part94B9E075.0__=" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__Part94B9E075.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Replace them with per-CPU data. Signed-off-by: Jan Beulich --- 2010-06-15.orig/xen/common/keyhandler.c 2010-06-11 11:41:35.0000000= 00 +0200 +++ 2010-06-15/xen/common/keyhandler.c 2010-07-06 17:23:10.000000000 = +0200 @@ -307,8 +307,8 @@ static struct keyhandler dump_domains_ke }; =20 static cpumask_t read_clocks_cpumask =3D CPU_MASK_NONE; -static s_time_t read_clocks_time[NR_CPUS]; -static u64 read_cycles_time[NR_CPUS]; +static DEFINE_PER_CPU(s_time_t, read_clocks_time); +static DEFINE_PER_CPU(u64, read_cycles_time); =20 static void read_clocks_slave(void *unused) { @@ -316,8 +316,8 @@ static void read_clocks_slave(void *unus local_irq_disable(); while ( !cpu_isset(cpu, read_clocks_cpumask) ) cpu_relax(); - read_clocks_time[cpu] =3D NOW(); - read_cycles_time[cpu] =3D get_cycles(); + per_cpu(read_clocks_time, cpu) =3D NOW(); + per_cpu(read_cycles_time, cpu) =3D get_cycles(); cpu_clear(cpu, read_clocks_cpumask); local_irq_enable(); } @@ -339,8 +339,8 @@ static void read_clocks(unsigned char ke =20 local_irq_disable(); read_clocks_cpumask =3D cpu_online_map; - read_clocks_time[cpu] =3D NOW(); - read_cycles_time[cpu] =3D get_cycles(); + per_cpu(read_clocks_time, cpu) =3D NOW(); + per_cpu(read_cycles_time, cpu) =3D get_cycles(); cpu_clear(cpu, read_clocks_cpumask); local_irq_enable(); =20 @@ -350,20 +350,24 @@ static void read_clocks(unsigned char ke min_stime_cpu =3D max_stime_cpu =3D min_cycles_cpu =3D max_cycles_cpu = =3D cpu; for_each_online_cpu ( cpu ) { - if ( read_clocks_time[cpu] < read_clocks_time[min_stime_cpu] ) + if ( per_cpu(read_clocks_time, cpu) < + per_cpu(read_clocks_time, min_stime_cpu) ) min_stime_cpu =3D cpu; - if ( read_clocks_time[cpu] > read_clocks_time[max_stime_cpu] ) + if ( per_cpu(read_clocks_time, cpu) > + per_cpu(read_clocks_time, max_stime_cpu) ) max_stime_cpu =3D cpu; - if ( read_cycles_time[cpu] < read_cycles_time[min_cycles_cpu] ) + if ( per_cpu(read_cycles_time, cpu) < + per_cpu(read_cycles_time, min_cycles_cpu) ) min_cycles_cpu =3D cpu; - if ( read_cycles_time[cpu] > read_cycles_time[max_cycles_cpu] ) + if ( per_cpu(read_cycles_time, cpu) > + per_cpu(read_cycles_time, max_cycles_cpu) ) max_cycles_cpu =3D cpu; } =20 - min_stime =3D read_clocks_time[min_stime_cpu]; - max_stime =3D read_clocks_time[max_stime_cpu]; - min_cycles =3D read_cycles_time[min_cycles_cpu]; - max_cycles =3D read_cycles_time[max_cycles_cpu]; + min_stime =3D per_cpu(read_clocks_time, min_stime_cpu); + max_stime =3D per_cpu(read_clocks_time, max_stime_cpu); + min_cycles =3D per_cpu(read_cycles_time, min_cycles_cpu); + max_cycles =3D per_cpu(read_cycles_time, max_cycles_cpu); =20 spin_unlock(&lock); =20 --=__Part94B9E075.0__= Content-Type: text/plain; name="read-clocks-keyhandler-no-NR_CPUS.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="read-clocks-keyhandler-no-NR_CPUS.patch" Replace them with per-CPU data.=0A=0ASigned-off-by: Jan Beulich =0A=0A--- 2010-06-15.orig/xen/common/keyhandler.c 2010-06-11 = 11:41:35.000000000 +0200=0A+++ 2010-06-15/xen/common/keyhandler.c = 2010-07-06 17:23:10.000000000 +0200=0A@@ -307,8 +307,8 @@ static struct = keyhandler dump_domains_ke=0A };=0A =0A static cpumask_t read_clocks_cpumas= k =3D CPU_MASK_NONE;=0A-static s_time_t read_clocks_time[NR_CPUS];=0A-stati= c u64 read_cycles_time[NR_CPUS];=0A+static DEFINE_PER_CPU(s_time_t, = read_clocks_time);=0A+static DEFINE_PER_CPU(u64, read_cycles_time);=0A =0A = static void read_clocks_slave(void *unused)=0A {=0A@@ -316,8 +316,8 @@ = static void read_clocks_slave(void *unus=0A local_irq_disable();=0A = while ( !cpu_isset(cpu, read_clocks_cpumask) )=0A cpu_relax();=0A-= read_clocks_time[cpu] =3D NOW();=0A- read_cycles_time[cpu] =3D = get_cycles();=0A+ per_cpu(read_clocks_time, cpu) =3D NOW();=0A+ = per_cpu(read_cycles_time, cpu) =3D get_cycles();=0A cpu_clear(cpu, = read_clocks_cpumask);=0A local_irq_enable();=0A }=0A@@ -339,8 +339,8 = @@ static void read_clocks(unsigned char ke=0A =0A local_irq_disable();= =0A read_clocks_cpumask =3D cpu_online_map;=0A- read_clocks_time[cpu= ] =3D NOW();=0A- read_cycles_time[cpu] =3D get_cycles();=0A+ = per_cpu(read_clocks_time, cpu) =3D NOW();=0A+ per_cpu(read_cycles_time, = cpu) =3D get_cycles();=0A cpu_clear(cpu, read_clocks_cpumask);=0A = local_irq_enable();=0A =0A@@ -350,20 +350,24 @@ static void read_clocks(uns= igned char ke=0A min_stime_cpu =3D max_stime_cpu =3D min_cycles_cpu = =3D max_cycles_cpu =3D cpu;=0A for_each_online_cpu ( cpu )=0A = {=0A- if ( read_clocks_time[cpu] < read_clocks_time[min_stime_cpu] = )=0A+ if ( per_cpu(read_clocks_time, cpu) <=0A+ = per_cpu(read_clocks_time, min_stime_cpu) )=0A min_stime_cpu = =3D cpu;=0A- if ( read_clocks_time[cpu] > read_clocks_time[max_stime= _cpu] )=0A+ if ( per_cpu(read_clocks_time, cpu) >=0A+ = per_cpu(read_clocks_time, max_stime_cpu) )=0A max_stime_cpu = =3D cpu;=0A- if ( read_cycles_time[cpu] < read_cycles_time[min_cycle= s_cpu] )=0A+ if ( per_cpu(read_cycles_time, cpu) <=0A+ = per_cpu(read_cycles_time, min_cycles_cpu) )=0A min_cycles_cpu = =3D cpu;=0A- if ( read_cycles_time[cpu] > read_cycles_time[max_cycle= s_cpu] )=0A+ if ( per_cpu(read_cycles_time, cpu) >=0A+ = per_cpu(read_cycles_time, max_cycles_cpu) )=0A max_cycles_cpu = =3D cpu;=0A }=0A =0A- min_stime =3D read_clocks_time[min_stime_cpu];= =0A- max_stime =3D read_clocks_time[max_stime_cpu];=0A- min_cycles = =3D read_cycles_time[min_cycles_cpu];=0A- max_cycles =3D read_cycles_tim= e[max_cycles_cpu];=0A+ min_stime =3D per_cpu(read_clocks_time, = min_stime_cpu);=0A+ max_stime =3D per_cpu(read_clocks_time, max_stime_cp= u);=0A+ min_cycles =3D per_cpu(read_cycles_time, min_cycles_cpu);=0A+ = max_cycles =3D per_cpu(read_cycles_time, max_cycles_cpu);=0A =0A = spin_unlock(&lock);=0A =0A --=__Part94B9E075.0__= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=__Part94B9E075.0__=--