Re: [Perfctr-devel] 2.6.16-rc5 perfmon2 new code base + libpfm with Montecito support

From: William Cohen <>
Date: 2006-03-14 07:58:06
Stephane Eranian wrote:
> Will,
> On Mon, Mar 13, 2006 at 02:15:53PM -0500, William Cohen wrote:
>>Yes, I have a similar patch for i386 in the kernel. I don't yet have 
>>modifications for opcontrol or ophelp.
> Your patch is very close to mine. I'll merge tthe two and will include
> it in my next version.
> My understand of opcontrol is that is passes the information from ophelp
> to the kernel via /dev/oprofile. I don't know how it passes it to the oprofiled
> daemon.
> The daemon should not be difficult to change. I hacked something quickly
> and got it up on pentium M. The only remaining problem is ophelp, I think.

Is new identifier cpu_type being created or is i386/pentium_m being used 
also for perfmon2? It could be inferred that perfmon2 is being used if 
the procesor is identified, but there are no number directories for the 
counters (/dev/oprofile/[0-9]+).

I looked over the code this afternoon to refresh my memory how it actual 
work (as opposed to how I thought it works).

ophelp uses oprofile/libop/op_cpu_type.c:op_get_cpu_type to read 
/dev/oprofile/cpu_type. Once ophelp obtains the cpu type the appropriate 
directory from /usr/share/oprofile for the events. This information is 
passed to oprofiled; you can see it with "opcontrol --start --verbose".

oprofile/daemon/opd_perfmon.c and opd_perfmon.h are the place that the 
performance monitoring hardware is set for perfmon. 
opd_perfmon.c:write_pmu() is currently hard coded for ia64. As you have 
seen, it doesn't use the libpfm to set up the performance monitoring 

Looking over the code in the linux/arch/i386/oprofile the code for 
typing the processor is tied to the initialization of the performance 
monitoring hardware. Probably want to factor out cpu idenification code 
from oprofile native handling of the performance monitoring code. So the 
pseudo code is something like in 

char *processor_id = identify_processer();
ret = op_perfmon_support(ops, processor_id);
if (ret < 0)
	ret = op_nmi_init(ops, processor_id);
if (ret < 0)
	ret = op_nmi_timer(ops, processor_id);
return ret;


To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to
More majordomo info at
Received on Tue Mar 14 08:02:10 2006

This archive was generated by hypermail 2.1.8 : 2006-03-14 08:02:19 EST