Messages in this thread Patch in this message | | | Date | Wed, 30 Oct 2002 04:11:21 +0000 | From | John Levon <> | Subject | [PATCH] fix oprofile multiple counters |
| |
Linus, the below ensures we deal properly with multiple perfctr overflow interrupts under high load.
Please apply
thanks john
diff -Naur -X dontdiff linux-linus/arch/i386/oprofile/op_model_athlon.c linux/arch/i386/oprofile/op_model_athlon.c --- linux-linus/arch/i386/oprofile/op_model_athlon.c Wed Oct 16 19:08:39 2002 +++ linux/arch/i386/oprofile/op_model_athlon.c Thu Oct 24 02:10:26 2002 @@ -95,17 +95,16 @@ struct pt_regs * const regs) { unsigned int low, high; - int handled = 0; int i; for (i = 0 ; i < NUM_COUNTERS; ++i) { CTR_READ(low, high, msrs, i); if (CTR_OVERFLOWED(low)) { oprofile_add_sample(regs->eip, i, cpu); CTR_WRITE(reset_value[i], msrs, i); - handled = 1; + return 1; } } - return handled; + return 0; } diff -Naur -X dontdiff linux-linus/arch/i386/oprofile/op_model_ppro.c linux/arch/i386/oprofile/op_model_ppro.c --- linux-linus/arch/i386/oprofile/op_model_ppro.c Wed Oct 16 19:08:39 2002 +++ linux/arch/i386/oprofile/op_model_ppro.c Thu Oct 24 02:10:42 2002 @@ -90,17 +90,16 @@ { unsigned int low, high; int i; - int handled = 0; for (i = 0 ; i < NUM_COUNTERS; ++i) { CTR_READ(low, high, msrs, i); if (CTR_OVERFLOWED(low)) { oprofile_add_sample(regs->eip, i, cpu); CTR_WRITE(reset_value[i], msrs, i); - handled = 1; + return 1; } } - return handled; + return 0; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |