diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-08-11 10:52:18 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-08-11 10:52:18 +0100 |
commit | c3eade240902c2a420d202b5d9cd8434ef2e4b37 (patch) | |
tree | 28c573715b61edf3f347e645f4cb0a83b5d02e97 | |
parent | b904b98221d30f2962f4372b9dfea06554b621b5 (diff) | |
download | xen-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.c | 40 |
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; |