
From: Philippe Elie <phil.el@wanadoo.fr>

From: Will Cohen <wcohen@redhat.com>

Add oprofile support for Pentium Mobile (P6 core).  Pentium Mobile needs to
unmask LVPTC vector, since it doesn't hurt other P6 core based cpus we do
it unconditionally for all these.

This patch require userspace tools >= 0.8 (only in sourceforge cvs currently)



---

 25-akpm/arch/i386/oprofile/nmi_int.c       |    4 +++-
 25-akpm/arch/i386/oprofile/op_model_ppro.c |    5 +++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff -puN arch/i386/oprofile/nmi_int.c~oprofile-pentium-m-support arch/i386/oprofile/nmi_int.c
--- 25/arch/i386/oprofile/nmi_int.c~oprofile-pentium-m-support	Thu Feb 12 14:56:21 2004
+++ 25-akpm/arch/i386/oprofile/nmi_int.c	Thu Feb 12 14:56:21 2004
@@ -335,7 +335,9 @@ static int __init ppro_init(void)
 	if (cpu_model > 0xd)
 		return 0;
 
-	if (cpu_model > 5) {
+	if (cpu_model == 9) {
+		nmi_ops.cpu_type = "i386/p6_mobile";
+	} else if (cpu_model > 5) {
 		nmi_ops.cpu_type = "i386/piii";
 	} else if (cpu_model > 2) {
 		nmi_ops.cpu_type = "i386/pii";
diff -puN arch/i386/oprofile/op_model_ppro.c~oprofile-pentium-m-support arch/i386/oprofile/op_model_ppro.c
--- 25/arch/i386/oprofile/op_model_ppro.c~oprofile-pentium-m-support	Thu Feb 12 14:56:21 2004
+++ 25-akpm/arch/i386/oprofile/op_model_ppro.c	Thu Feb 12 14:56:21 2004
@@ -13,6 +13,7 @@
 #include <linux/oprofile.h>
 #include <asm/ptrace.h>
 #include <asm/msr.h>
+#include <asm/apic.h>
  
 #include "op_x86_model.h"
 #include "op_counter.h"
@@ -101,6 +102,10 @@ static int ppro_check_ctrs(unsigned int 
 		}
 	}
 
+	/* Only P6 based Pentium M need to re-unmask the apic vector but it
+	 * doesn't hurt other P6 variant */
+	apic_write(APIC_LVTPC, apic_read(APIC_LVTPC) & ~APIC_LVT_MASKED);
+
 	/* We can't work out if we really handled an interrupt. We
 	 * might have caught a *second* counter just after overflowing
 	 * the interrupt for this counter then arrives

_
