x86: oprofile: remove NR_CPUS arrays in arch/x86/oprofile/nmi_int.c
authorMike Travis <travis@sgi.com>
Tue, 25 Mar 2008 22:06:59 +0000 (15:06 -0700)
committerIngo Molnar <mingo@elte.hu>
Sat, 19 Apr 2008 17:44:58 +0000 (19:44 +0200)
commitd18d00f5dbcd1a95811617e9812cf0560bd465ee
tree2d76e6deaab5af91c0c58c90d5e9383edd88000c
parent6b6309b4c7f6da467c5d5b7d18fa8cb79730f381
x86: oprofile: remove NR_CPUS arrays in arch/x86/oprofile/nmi_int.c

Change the following arrays sized by NR_CPUS to be PERCPU variables:

static struct op_msrs cpu_msrs[NR_CPUS];
static unsigned long saved_lvtpc[NR_CPUS];

Also some minor complaints from checkpatch.pl fixed.

Based on:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git

All changes were transparent except for:

 static void nmi_shutdown(void)
 {
+ struct op_msrs *msrs = &__get_cpu_var(cpu_msrs);
  nmi_enabled = 0;
  on_each_cpu(nmi_cpu_shutdown, NULL, 0, 1);
  unregister_die_notifier(&profile_exceptions_nb);
- model->shutdown(cpu_msrs);
+ model->shutdown(msrs);
  free_msrs();
 }

The existing code passed a reference to cpu 0's instance of struct op_msrs
to model->shutdown, whilst the other functions are passed a reference to
<this cpu's> instance of a struct op_msrs.  This seemed to be a bug to me
even though as long as cpu 0 and <this cpu> are of the same type it would
have the same effect...?

Cc: Philippe Elie <phil.el@wanadoo.fr>
Signed-off-by: Mike Travis <travis@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/oprofile/nmi_int.c