Stephane

> Try making the syscall contiguous first. So adjust libpfm, no the kernel.
> And yes, I was referring to the adjust_sys_base() function.
>

I rebuilt my kernel to use syscall numbers that start with 280 (so they
will be contiguous) for perfmon and then rebooted.  I then rebuilt libpfm
after changeing the value assigned to sys_base from 286 to 280 in the
default case of the "adjust_sys_base()" function for the x86_64 arch.

When I build libpfm, the code under "#ifdef PFMLIB_VERSION_22" is not
getting compiled.  When I run the make the compiles look like this:

gcc -O2 -g -Wall -Werror -I/opt/hpctk/downloads/libpfm/libpfm-3.5
/lib/../include -D_REENTRANT -DCONFIG_PFMLIB_ARCH_X86_64 -I. -c
pfmlib_os_linux.c

When I run the tests now, I still get the invalid FD on the kernel call
following the pfm_create_context because the FD allocated in the create
call does not get returned to the caller.

If I add "-DPFMLIB_VERSION_22" to the CFLAGS in config.mk then make libpfm,
the FD allocated in the create call gets passed back to the caller and the
next call gets a different error.  The ./self program with this combination
gets this result:

[jax] (hpctk) examples> ./self
pfmlib_os_linux.c.214 (adjust_sys_base): Entered
sycall base 280
pfmlib_os_linux.c.128 (pfm_create_context): Entered
pfmlib_os_linux.c.136 (pfm_create_context): VERSION_22 fd values r: 0
ctx_fd 3
pfmlib_core.c.368 (pfm_core_dispatch_counters): i=0 next_gen=0 last=1
isset=1
pfmlib_core.c.368 (pfm_core_dispatch_counters): i=0 next_gen=1 last=1
isset=0
pfmlib_core.c.375 (pfm_core_dispatch_counters): cannot assign generic
counters
cannot configure events: cannot assign events to counters

Kernel messages for this run look like this (some debug messages have been
added):

perfmon: perfmon/perfmon_syscalls.c.365(sys_pfm_create_context): CPU6
[6619]: Entered
perfmon: perfmon/perfmon.c.1517(__pfm_create_context): CPU6 [6619]: Entered
perfmon: perfmon/perfmon_pmu.c.395(pfm_pmu_conf_get): CPU6 [6619]: Entered
perfmon: perfmon/perfmon_file.c.699(pfm_alloc_fd): CPU6 [6619]: Entered
perfmon: perfmon/perfmon_file.c.717(pfm_alloc_fd): CPU6 [6619]: new inode
ino=20117 @ffff810122ebe6c0
perfmon: perfmon/perfmon_sets.c.490(pfm_find_set): CPU6 [6619]: looking for
set=0
perfmon: perfmon/perfmon_sets.c.559(pfm_find_set): CPU6 [6619]: set_id=0
size=2584 view=ffff810116eae970 remap=0 mmap_offs=0
perfmon: perfmon/perfmon_sets.c.468(pfm_init_evtset): CPU6 [6619]: set0
pmc1=0x100000
perfmon: perfmon/perfmon.c.1626(__pfm_create_context): CPU6 [6619]:
ctx=ffff810117980000 flags=0x0 system=0 notify_block=0 no_msg=0 use_fmt=0
remap=0 ctx_fd=3 mode=0
perfmon: perfmon/perfmon.c.1639(__pfm_create_context): CPU6 [6619]: got to
normal return
perfmon: perfmon/perfmon_sets.c.926(sys_pfm_getinfo_evtsets): CPU6 [6619]:
Entered
perfmon: perfmon/perfmon_syscalls.c.127(pfm_check_task_state): CPU6 [6619]:
state=1 [-1] task_state=-1 check_mask=0x0
perfmon: perfmon/perfmon_sets.c.617(__pfm_getinfo_evtsets): CPU6 [6619]:
set_id=0
perfmon: perfmon/perfmon_sets.c.667(__pfm_getinfo_evtsets): CPU6 [6619]:
set 0 flags=0x0 eff_usec=0 runs=0
perfmon: perfmon/perfmon_file.c.509(__pfm_close): CPU6 [6619]: state=1
perfmon: perfmon/perfmon.c.118(pfm_context_free): CPU6 [6619]: free ctx
@ffff810117980000


Results when I provide the PFMLIB_VERSION_22 conditional compile variable
seem to be a little better.
Is this the correct way to build ??

Do you have any idea what I may have messed up or where to look for "cannot
assign events to counters" problem ??

Thanks
Gary


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to