Messages in this thread Patch in this message |  | | Date | Thu, 15 Jan 2009 09:46:10 +0100 (CET) | | From | Thomas Gleixner <> | | Subject | Re: 2.6.28-rc9: oprofile regression |
| |
Tim,
On Wed, 14 Jan 2009, Tim Blechmann wrote: > this code (line 81/82), changes counter_width from 32 to 40. > > if (counter_width < eax.split.bit_width) > counter_width = eax.split.bit_width; > > however when removing these lines, and thus keeping the value 32 for > counter_width, doesn't change the behavior, only one NMI per cpu.
It would only help, when the reported bit_width would be bogus. We know that you get at least one NMI, so lets look at the results we get there.
Thanks,
tglx --- arch/x86/oprofile/op_model_ppro.c | 4 ++++ 1 file changed, 4 insertions(+)
Index: linux-2.6/arch/x86/oprofile/op_model_ppro.c =================================================================== --- linux-2.6.orig/arch/x86/oprofile/op_model_ppro.c +++ linux-2.6/arch/x86/oprofile/op_model_ppro.c @@ -126,11 +126,15 @@ static int ppro_check_ctrs(struct pt_reg u64 val; int i; + printk(KERN_INFO "ppro_check_ctrs\n"); + for (i = 0 ; i < num_counters; ++i) { if (!reset_value[i]) continue; rdmsrl(msrs->counters[i].addr, val); + printk(KERN_INFO "cntr %d: 0x%016lx\n", i, (unsigned long) val); if (CTR_OVERFLOWED(val)) { + printk(KERN_INFO "cntr %d overflowed\n", i); oprofile_add_sample(regs, i); wrmsrl(msrs->counters[i].addr, -reset_value[i]); }
|  |