From: Markus Armbruster <armbru@redhat.com> Date: Wed, 27 Aug 2008 17:51:22 -0400 Subject: [xen] x86: make xenoprof recognize other platforms Message-id: m38wuirusl.fsf@crossbow.pond.sub.org O-Subject: [PATCH RHEL-5.3 2/2] Make Xenoprof recognize Nehalem Bugzilla: 458441 RH-Acked-by: Anton Arapov <aarapov@redhat.com> RH-Acked-by: Rik van Riel <riel@redhat.com> Straightforward backport from xen-unstable: # HG changeset patch # User Keir Fraser <keir.fraser@citrix.com> # Date 1218448338 -3600 # Node ID 3d5515f40b9b2bfee339cc223f891bd5c61d6855 # Parent f60c565e2ca24bcf5063da8f0de9e3fef192d451 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> Bug 458441. diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c index 88a1da8..4c9d1e7 100644 --- a/arch/x86/oprofile/nmi_int.c +++ b/arch/x86/oprofile/nmi_int.c @@ -295,24 +295,38 @@ 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"; + break; + case 26: *cpu_type = "i386/core_2"; - else if (cpu_model > 15) { + 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 == 14) - *cpu_type = "i386/core"; - 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;