Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 89877e42827f16fa5f86b1df0c2860b1 > files > 2881

kernel-2.6.18-128.1.10.el5.src.rpm

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;