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]