aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-08-11 10:52:18 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-08-11 10:52:18 +0100
commitc3eade240902c2a420d202b5d9cd8434ef2e4b37 (patch)
tree28c573715b61edf3f347e645f4cb0a83b5d02e97
parentb904b98221d30f2962f4372b9dfea06554b621b5 (diff)
downloadxen-c3eade240902c2a420d202b5d9cd8434ef2e4b37.tar.gz
xen-c3eade240902c2a420d202b5d9cd8434ef2e4b37.tar.bz2
xen-c3eade240902c2a420d202b5d9cd8434ef2e4b37.zip
x86, xenoprof: Add Nehalem to list of ppro cores
Straight port from Linus's tree: commit 4b9f12a3779c548b68bc9af7d94030868ad3aa1b Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Thu Jul 24 17:29:00 2008 -0700 x86/oprofile/nmi_int: add Nehalem to list of ppro cores ..otherwise oprofile will fall back on that poor timer interrupt. Also replace the unreadable chain of if-statements with a "switch()" statement instead. It generates better code, and is a lot clearer. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Markus Armbruster <armbru@redhat.com>
-rw-r--r--xen/arch/x86/oprofile/nmi_int.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/xen/arch/x86/oprofile/nmi_int.c b/xen/arch/x86/oprofile/nmi_int.c
index 999a63be4c..4410342055 100644
--- a/xen/arch/x86/oprofile/nmi_int.c
+++ b/xen/arch/x86/oprofile/nmi_int.c
@@ -296,24 +296,40 @@ static int __init ppro_init(char ** cpu_type)
{
__u8 cpu_model = current_cpu_data.x86_model;
- if (cpu_model == 15 || cpu_model == 23) {
+ switch (cpu_model) {
+ case 0 ... 2:
+ *cpu_type = "i386/ppro";
+ break;
+ case 3 ... 5:
+ *cpu_type = "i386/pii";
+ break;
+ case 6 ... 8:
+ *cpu_type = "i386/piii";
+ break;
+ case 9:
+ *cpu_type = "i386/p6_mobile";
+ break;
+ case 10 ... 13:
+ *cpu_type = "i386/p6";
+ break;
+ case 14:
+ *cpu_type = "i386/core";
+ break;
+ case 15: case 23:
*cpu_type = "i386/core_2";
ppro_has_global_ctrl = 1;
- } else if (cpu_model == 14)
- *cpu_type = "i386/core";
- else if (cpu_model > 13) {
+ break;
+ case 26:
+ *cpu_type = "i386/core_2";
+ ppro_has_global_ctrl = 1;
+ break;
+ default:
+ /* Unknown */
printk("xenoprof: Initialization failed. "
"Intel processor model %d for P6 class family is not "
"supported\n", cpu_model);
return 0;
- } else if (cpu_model == 9)
- *cpu_type = "i386/p6_mobile";
- else if (cpu_model > 5)
- *cpu_type = "i386/piii";
- else if (cpu_model > 2)
- *cpu_type = "i386/pii";
- else
- *cpu_type = "i386/ppro";
+ }
model = &op_ppro_spec;
return 1;