Re: nmi_watchdog=2 - Oops with 2.6.8

From: Philippe Elie
Date: Thu Aug 26 2004 - 12:38:37 EST


On Wed, 25 Aug 2004 at 20:22 +0000, Zarakin wrote:

> > try this patch please.

> It worked, my machine boots now fine with nmi_watchdog=2.
>
> I can also confirm that oprofile is broken due to the missing
> MSR_P4_IQ_ESCR0/1:
> http://marc.theaimsgroup.com/?l=oprofile-list&m=109323108114060&w=2
>

gahh, I missed this mail...

try this patch for oprofile I'll appreciate a lot if you can test with
an UP and a SMP with HT enabled kernel. I tested the patch only with
model = 2 P4 with an HT kernel. I don't see any other user of these
two msr in oprofile nor in kernel.

regards, phe.

--- linux-2.5/arch/i386/oprofile/op_model_p4.c.old 2004-08-25 20:00:56.000000000 +0200
+++ linux-2.5/arch/i386/oprofile/op_model_p4.c 2004-08-25 21:46:14.000000000 +0200
@@ -419,9 +419,28 @@
msrs->controls[i].addr = addr;
}

- /* 43 ESCR registers in three discontiguous group */
+ /* 43 ESCR registers in three or four discontiguous group */
for (addr = MSR_P4_BSU_ESCR0 + stag;
- addr <= MSR_P4_SSU_ESCR0; ++i, addr += addr_increment()) {
+ addr < MSR_P4_IQ_ESCR0; ++i, addr += addr_increment()) {
+ msrs->controls[i].addr = addr;
+ }
+
+ /* no IQ_ESCR0/1 on some models, we save a seconde time BSU_ESCR0/1
+ * to avoid special case in nmi_{save|restore}_registers() */
+ if (boot_cpu_data.x86_model >= 0x3) {
+ for (addr = MSR_P4_BSU_ESCR0 + stag;
+ addr <= MSR_P4_BSU_ESCR1; ++i, addr += addr_increment()) {
+ msrs->controls[i].addr = addr;
+ }
+ } else {
+ for (addr = MSR_P4_IQ_ESCR0 + stag;
+ addr <= MSR_P4_IQ_ESCR1; ++i, addr += addr_increment()) {
+ msrs->controls[i].addr = addr;
+ }
+ }
+
+ for (addr = MSR_P4_RAT_ESCR0 + stag;
+ addr <= MSR_P4_SSU_ESCR0; ++i, addr += addr_increment()) {
msrs->controls[i].addr = addr;
}



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/