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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 hardware.

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 linux/arch/i386/oprofile/init.c:oprofile_arch_init():

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;

-Will

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

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux