2005-12-15 10:47:22

by Stephane Eranian

[permalink] [raw]
Subject: 2.6.15-rc5-git3 perfmon2 new code base + libpfm available

Hello,

I have released a new version of the perfmon base package.
This release is relative to 2.6.15-rc5-git3.

I have also updated the library, libpfm-3.2, to match the kernel
level changes.

This new kernel patch includes several important changes:

- pfm_create_context() interface has changed. The sampling
buffer format argument is now passed explicitly instead
of relying on it being contiguous to pfarg_ctx_t.

- code in perfmon/perfmon.c has been split into 8
different files for improved maintainability. Each
file implements one specific function. Perfmon.c
remains the core.

- fixed several important bugs for i386 and x86_64 for
Intel P4/Xeon (simple counting was returning 0).

- added support for virtual PMD (read/write)

- added notion of read-only PMD

- Split Pentium M/P 6 PMU description in preparation for
Pentium M LBR support

- Added support for reference counting on PMU description
and Sampling buffer modules to avoid panic in case
module is removed while being used.

- On i386/X86_64, added code to handle the NMI watchdog
when it is using the Local APIC. We now use
reserve_lapic_nmi() and release_lapic_nmi().

- various other cleanups and bug fixes

You MUST use libpfm-3.2-051215 with this kernel due to
interface change for pfm_create_context().

As usual, you can download the latest packages from the
SourceForge website at:

http://www.sf.net/projects/perfmon2

I will be posting the patches directly to LKML for
review very shortly.

Enjoy,
--

-Stephane


2005-12-15 21:25:51

by William Cohen

[permalink] [raw]
Subject: Re: [Perfctr-devel] 2.6.15-rc5-git3 perfmon2 new code base + libpfm available

Stephane Eranian wrote:
> Hello,
>
> I have released a new version of the perfmon base package.
> This release is relative to 2.6.15-rc5-git3.
>
> I have also updated the library, libpfm-3.2, to match the kernel
> level changes.

Hi Stephane,

I downloaded the new version of perfmon and the matching libpfm. I built
everything on a p6 based machine. The kernel booted fine. I tried the
task_smpl_user in the libpfm examples. That crashed the kernel. What was
on the xterm:

$ ./task_smpl_user ls
measuring at plm=0x8
programming 2 PMCS and 2 PMDS
Segmentation fault

The related oops /var/log/messages:

Dec 15 15:54:40 trek kernel: Unable to handle kernel paging request at
virtual address 6b6b6ba7
Dec 15 15:54:40 trek kernel: printing eip:
Dec 15 15:54:40 trek kernel: c0202b51
Dec 15 15:54:40 trek kernel: *pde = 6b6b6b6b
Dec 15 15:54:40 trek kernel: Oops: 0000 [#1]
Dec 15 15:54:40 trek kernel: SMP
Dec 15 15:54:40 trek kernel: Modules linked in: ipv6 lp autofs4 rfcomm
l2cap bluetooth sunrpc ipt_REJECT ipt_state ip_conntrack nfnetlink
iptable_filter ip_tables dm_mirror dm_mod video button battery ac
parport_pc parport snd_emu10k1_synth snd_emux_synth snd_seq_virmidi
snd_cs46xx snd_seq_midi_emul snd_seq_dummy snd_seq_oss snd_emu10k1
snd_seq_midi_event snd_seq snd_rawmidi snd_seq_device snd_pcm_oss
snd_ac97_codec snd_mixer_oss snd_ac97_bus snd_pcm snd_util_mem floppy
snd_hwdep snd_timer emu10k1_gp snd gameport soundcore snd_page_alloc
3c59x mii i2c_i801 hw_random uhci_hcd shpchp i2c_core ext3 jbd
Dec 15 15:54:40 trek kernel: CPU: 0
Dec 15 15:54:40 trek kernel: EIP: 0060:[<c0202b51>] Not tainted VLI
Dec 15 15:54:40 trek kernel: EFLAGS: 00010286 (2.6.15-rc5-git3-perfop)
Dec 15 15:54:40 trek kernel: EIP is at pfm_smpl_fmt_put+0x11/0x60
Dec 15 15:54:40 trek kernel: eax: d6ee6ab0 ebx: 6b6b6b6b ecx:
00000000 edx: 00000cf4
Dec 15 15:54:40 trek kernel: esi: cf9f2000 edi: 00000000 ebp:
00000000 esp: cfc1ff00
Dec 15 15:54:40 trek kernel: ds: 007b es: 007b ss: 0068
Dec 15 15:54:40 trek kernel: Process task_smpl_user (pid: 2654,
threadinfo=cfc1f000 task=d6ee6ab0)
Dec 15 15:54:40 trek kernel: Stack: ffffffda c0201ee7 00000000 c010400c
d6ee6ab0 d6dea570 d6dea740 00000000
Dec 15 15:54:40 trek kernel: d7010a34 00802140 00000000 00000000
00000000 cfc1ff68 d2d5b9a4 00000000
Dec 15 15:54:40 trek kernel: 0000003c 00000000 cfc1f000 00000000
cfc1ff68 00000000 cfc1f000 c0203f98
Dec 15 15:54:40 trek kernel: Call Trace:
Dec 15 15:54:40 trek kernel: [<c0201ee7>] __pfm_create_context+0x167/0x440
Dec 15 15:54:40 trek kernel: [<c010400c>] __switch_to+0x15c/0x220
Dec 15 15:54:40 trek kernel: [<c0203f98>] sys_pfm_create_context+0x78/0xe0
Dec 15 15:54:40 trek kernel: [<c010569d>] syscall_call+0x7/0xb
Dec 15 15:54:40 trek kernel: Code: 00 01 00 00 ff 00 b8 80 4c 44 c0 e8
9a d2 16 00 89 d8 5b c3 31 db eb ee 89 f6 85 c0 53 89 c3 74 39 b8 80 4c
44 c0 e8 5f d2 16 00 <8b> 53 3c 85 d2 74 1b b8 00 f0 ff ff 21 e0 8b 40
10 c1 e0 07 8d


-Will

2005-12-15 22:00:45

by Stephane Eranian

[permalink] [raw]
Subject: Re: [Perfctr-devel] 2.6.15-rc5-git3 perfmon2 new code base + libpfm available

Will,


On Thu, Dec 15, 2005 at 04:22:28PM -0500, William Cohen wrote:
> Stephane Eranian wrote:

> >I have released a new version of the perfmon base package.
> >This release is relative to 2.6.15-rc5-git3.
> >
> >I have also updated the library, libpfm-3.2, to match the kernel
> >level changes.
>
> I downloaded the new version of perfmon and the matching libpfm. I built
> everything on a p6 based machine. The kernel booted fine. I tried the
> task_smpl_user in the libpfm examples. That crashed the kernel. What was
> on the xterm:
>
> $ ./task_smpl_user ls
> measuring at plm=0x8
> programming 2 PMCS and 2 PMDS
> Segmentation fault
>
I have not tried this particular test program in a long time. I nfact, I would
like to remove it from the suite because it does not make any real sense.
In any case, it should not crash the kernel. I will investigate this.
I don't think it it related to you using a P6. This is more the case of
an error in the cleanup code in case the context cannot be created properly.

Does task_smpl work properly?


> snd_hwdep snd_timer emu10k1_gp snd gameport soundcore snd_page_alloc
> Dec 15 15:54:40 trek kernel: EIP is at pfm_smpl_fmt_put+0x11/0x60
> Dec 15 15:54:40 trek kernel: Call Trace:
> Dec 15 15:54:40 trek kernel: [<c0201ee7>] __pfm_create_context+0x167/0x440
> Dec 15 15:54:40 trek kernel: [<c010400c>] __switch_to+0x15c/0x220
> Dec 15 15:54:40 trek kernel: [<c0203f98>] sys_pfm_create_context+0x78/0xe0
> Dec 15 15:54:40 trek kernel: [<c010569d>] syscall_call+0x7/0xb

Thanks.

--
-Stephane

2005-12-15 22:26:41

by William Cohen

[permalink] [raw]
Subject: Re: [Perfctr-devel] 2.6.15-rc5-git3 perfmon2 new code base + libpfm available

Stephane Eranian wrote:
> Will,
>
>
> On Thu, Dec 15, 2005 at 04:22:28PM -0500, William Cohen wrote:
>
>>Stephane Eranian wrote:
>
>
>>>I have released a new version of the perfmon base package.
>>>This release is relative to 2.6.15-rc5-git3.
>>>
>>>I have also updated the library, libpfm-3.2, to match the kernel
>>>level changes.
>>
>>I downloaded the new version of perfmon and the matching libpfm. I built
>>everything on a p6 based machine. The kernel booted fine. I tried the
>>task_smpl_user in the libpfm examples. That crashed the kernel. What was
>>on the xterm:
>>
>>$ ./task_smpl_user ls
>>measuring at plm=0x8
>>programming 2 PMCS and 2 PMDS
>>Segmentation fault
>>
>
> I have not tried this particular test program in a long time. I nfact, I would
> like to remove it from the suite because it does not make any real sense.
> In any case, it should not crash the kernel. I will investigate this.
> I don't think it it related to you using a P6. This is more the case of
> an error in the cleanup code in case the context cannot be created properly.

If it just seg faulted the user space program I wouldn't care either,
but when it crashed the kernel I thought that you might like to know
about that.

> Does task_smpl work properly?

task_smpl gave data, but appeared to get a kernel oops. Output from xterm:

$ ./task_smpl ls
smpl_pmd_mask=0x3
programming 2 PMCS and 2 PMDS
context [3] buffer mapped @0xb7f8f000
hdr_cur_offs=112 version=1.0
ia32 self task
ia64 self2 task_attach
Makefile self2.c task_attach.c
multiplex self2.o task_attach.o
multiplex2 self.c task_attach_timeout
multiplex2.c self.o task_attach_timeout.c
multiplex2.o self_standalone task_attach_timeout.o
multiplex.c self_standalone.c task.c
multiplex.o self_standalone.o task.o
notify_self self_view task_smpl
notify_self2 self_view.c task_smpl.c
notify_self2.c self_view.o task_smpl.o
notify_self2.o set_notify task_smpl_user
notify_self3 set_notify.c task_smpl_user.c
notify_self3.c set_notify.o task_smpl_user.o
notify_self3.o showreginfo task_view
notify_self.c showreginfo.c task_view.c
notify_self.o showreginfo.o task_view.o
notify_standalone smpl_standalone whichpmu
notify_standalone.c smpl_standalone.c whichpmu.c
notify_standalone.o smpl_standalone.o whichpmu.o
rtop syst x86_64
rtop.c syst.c
rtop.o syst.o
task terminated
entry 0 PID:2800 TID:2800 CPU:0 LAST_VAL: 100000 IIP:0x00000000c0105678
PMD1 = 0x0000000000003caa
entry 1 PID:2800 TID:2800 CPU:0 LAST_VAL: 100005 IIP:0x00000000003e94c2
PMD1 = 0x00000000000098a0
entry 2 PID:2800 TID:2800 CPU:0 LAST_VAL: 100067 IIP:0x000000000055093b
PMD1 = 0x00000000000088dc
entry 3 PID:2800 TID:2800 CPU:0 LAST_VAL: 100181 IIP:0x00000000004f7dd6
PMD1 = 0x0000000000006448
entry 4 PID:2800 TID:2800 CPU:0 LAST_VAL: 100020 IIP:0x000000000045ad51
PMD1 = 0x0000000000006281
entry 5 PID:2800 TID:2800 CPU:0 LAST_VAL: 100012 IIP:0x000000000040f490
PMD1 = 0x0000000000007e34
entry 6 PID:2800 TID:2800 CPU:0 LAST_VAL: 100212 IIP:0x00000000003e60d3
PMD1 = 0x0000000000005fd0
entry 7 PID:2800 TID:2800 CPU:0 LAST_VAL: 100076 IIP:0x00000000003ea871
PMD1 = 0x00000000000078c2
entry 8 PID:2800 TID:2800 CPU:0 LAST_VAL: 100149 IIP:0x0000000000424745
PMD1 = 0x00000000000064da
entry 9 PID:2800 TID:2800 CPU:0 LAST_VAL: 100051 IIP:0x000000000045b465
PMD1 = 0x000000000000c0aa
entry 10 PID:2800 TID:2800 CPU:0 LAST_VAL: 100070 IIP:0x000000000046677c
PMD1 = 0x00000000000075ca
entry 11 PID:2800 TID:2800 CPU:0 LAST_VAL: 100170 IIP:0x000000000046899e
PMD1 = 0x0000000000014808
entry 12 PID:2800 TID:2800 CPU:0 LAST_VAL: 100230 IIP:0x000000000046637a
PMD1 = 0x0000000000016b21
entry 13 PID:2800 TID:2800 CPU:0 LAST_VAL: 100011 IIP:0x00000000004682aa
PMD1 = 0x00000000000185b6
entry 14 PID:2800 TID:2800 CPU:0 LAST_VAL: 100045 IIP:0x000000000804ddfb
PMD1 = 0x0000000000016e3d
entry 15 PID:2800 TID:2800 CPU:0 LAST_VAL: 100092 IIP:0x000000000804ddff
PMD1 = 0x0000000000012b35
entry 16 PID:2800 TID:2800 CPU:0 LAST_VAL: 100005 IIP:0x000000000804d4cd
PMD1 = 0x000000000001544f
entry 17 PID:2800 TID:2800 CPU:0 LAST_VAL: 100067 IIP:0x000000000804c220
PMD1 = 0x000000000001761f
18 samples collected in 0 buffer overflows
real 0h00m00.007s user 0h00m00.000s sys 1141h33m30.134513s

Related information in /var/log/messages:

Dec 15 17:13:00 trek kernel: perfmon_p6: family=6 x86_model=8
Dec 15 17:13:00 trek kernel: P6 core PMU detected
Dec 15 17:13:00 trek kernel: perfmon: Intel P6 Family Processor PMU
detected, 2 PMCs, 2 PMDs, 2 counters (31 bits) RW_max:2
Dec 15 17:13:00 trek kernel: Intel P6 Family Processor PMU installed
Dec 15 17:13:22 trek kernel: Debug: sleeping function called from
invalid context at arch/i386/lib/usercopy.c:607
Dec 15 17:13:22 trek kernel: in_atomic():0, irqs_disabled():1
Dec 15 17:13:22 trek kernel: [<c020e4e3>] copy_to_user+0x23/0x90
Dec 15 17:13:22 trek kernel: [<c0205129>] pfm_read+0xa9/0x320
Dec 15 17:13:22 trek kernel: [<c0121180>] default_wake_function+0x0/0x10
Dec 15 17:13:22 trek kernel: [<c0205080>] pfm_read+0x0/0x320
Dec 15 17:13:22 trek kernel: [<c01713e8>] vfs_read+0xb8/0x170
Dec 15 17:13:22 trek kernel: [<c0171771>] sys_read+0x41/0x70
Dec 15 17:13:22 trek kernel: [<c010569d>] syscall_call+0x7/0xb
Dec 15 17:13:22 trek kernel: Unable to handle kernel paging request at
virtual address 6b6b6ba7
Dec 15 17:13:22 trek kernel: printing eip:
Dec 15 17:13:22 trek kernel: c0202b51
Dec 15 17:13:22 trek kernel: *pde = 00000000
Dec 15 17:13:22 trek kernel: Oops: 0000 [#1]
Dec 15 17:13:22 trek kernel: SMP
Dec 15 17:13:22 trek kernel: Modules linked in: perfmon_p6 ipv6 lp
autofs4 rfcomm l2cap bluetooth sunrpc ipt_REJECT ipt_state ip_conntrack
nfnetlink iptable_filter ip_tables dm_mirror dm_mod video button battery
ac parport_pc parport snd_emu10k1_synth snd_emux_synth snd_seq_virmidi
snd_seq_midi_emul snd_cs46xx snd_emu10k1 snd_seq_dummy snd_seq_oss
snd_seq_midi_event snd_seq snd_rawmidi snd_seq_device snd_ac97_codec
snd_pcm_oss snd_ac97_bus snd_mixer_oss snd_util_mem snd_pcm snd_hwdep
snd_timer floppy emu10k1_gp snd snd_page_alloc soundcore gameport 3c59x
mii i2c_i801 i2c_core hw_random uhci_hcd shpchp ext3 jbd
Dec 15 17:13:22 trek kernel: CPU: 1
Dec 15 17:13:22 trek kernel: EIP: 0060:[<c0202b51>] Not tainted VLI
Dec 15 17:13:22 trek kernel: EFLAGS: 00010282 (2.6.15-rc5-git3-perfop)
Dec 15 17:13:22 trek kernel: EIP is at pfm_smpl_fmt_put+0x11/0x60
Dec 15 17:13:22 trek kernel: eax: d61afab0 ebx: 6b6b6b6b ecx:
d8b3d7a0 edx: d8b3d900
Dec 15 17:13:22 trek kernel: esi: d1852000 edi: 00000001 ebp:
00000001 esp: d1f37ee0
Dec 15 17:13:22 trek kernel: ds: 007b es: 007b ss: 0068
Dec 15 17:13:22 trek kernel: Process task_smpl (pid: 2799,
threadinfo=d1f37000 task=d61afab0)
Dec 15 17:13:22 trek kernel: Stack: 00000001 c0205803 c0156569 6b000246
c13163a4 d1f935a0 d1f93614 d22ebb78
Dec 15 17:13:22 trek kernel: 00000286 00000000 00000010 00000010
d1f93614 d1f57d3c d22ebb78 c0172475
Dec 15 17:13:22 trek kernel: 00000000 d1f935a0 d7f8fb68 d1f57d3c
d1e1011c d2789bcc d7e45dbc 00000001
Dec 15 17:13:22 trek kernel: Call Trace:
Dec 15 17:13:22 trek kernel: [<c0205803>] pfm_close+0x113/0x3d0
Dec 15 17:13:22 trek kernel: [<c0156569>] poison_obj+0x29/0x60
Dec 15 17:13:22 trek kernel: [<c0172475>] __fput+0xb5/0x1a0
Dec 15 17:13:22 trek kernel: [<c01625e9>] remove_vma+0x39/0x50
Dec 15 17:13:22 trek kernel: [<c016477b>] exit_mmap+0xab/0x100
Dec 15 17:13:22 trek kernel: [<c0123423>] mmput+0x33/0xa0
Dec 15 17:13:22 trek kernel: [<c0128816>] do_exit+0xf6/0x3d0
Dec 15 17:13:22 trek kernel: [<c0109da8>] do_syscall_trace+0x218/0x22a
Dec 15 17:13:22 trek kernel: [<c0128b67>] do_group_exit+0x37/0xa0
Dec 15 17:13:22 trek kernel: [<c010569d>] syscall_call+0x7/0xb
Dec 15 17:13:22 trek kernel: Code: 00 01 00 00 ff 00 b8 80 4c 44 c0 e8
9a d2 16 00 89 d8 5b c3 31 db eb ee 89 f6 85 c0 53 89 c3 74 39 b8 80 4c
44 c0 e8 5f d2 16 00 <8b> 53 3c 85 d2 74 1b b8 00 f0 ff ff 21 e0 8b 40
10 c1 e0 07 8d

-Will

2005-12-15 23:16:28

by Stephane Eranian

[permalink] [raw]
Subject: Re: [Perfctr-devel] 2.6.15-rc5-git3 perfmon2 new code base + libpfm available

Will,

Ok, I found the two bugs you ran into. I also found
a third one somewhat similar.

Could you try the attached patch on top of what
you have?

I will check all the copy_from/to() tomorrow.

Thanks.

On Thu, Dec 15, 2005 at 05:23:27PM -0500, William Cohen wrote:
> >>>I have released a new version of the perfmon base package.
> >>>This release is relative to 2.6.15-rc5-git3.
> >>>
> >>>I have also updated the library, libpfm-3.2, to match the kernel
> >>>level changes.
> >>
> >>I downloaded the new version of perfmon and the matching libpfm. I built
> >>everything on a p6 based machine. The kernel booted fine. I tried the
> >>task_smpl_user in the libpfm examples. That crashed the kernel. What was
> >>on the xterm:
> >>
> >>$ ./task_smpl_user ls
> >>measuring at plm=0x8
> >>programming 2 PMCS and 2 PMDS
> >>Segmentation fault
> >>
> >
> >I have not tried this particular test program in a long time. I nfact, I
> >would
> >like to remove it from the suite because it does not make any real sense.
> >In any case, it should not crash the kernel. I will investigate this.
> >I don't think it it related to you using a P6. This is more the case of
> >an error in the cleanup code in case the context cannot be created
> >properly.
>
> If it just seg faulted the user space program I wouldn't care either,
> but when it crashed the kernel I thought that you might like to know
> about that.
>
> >Does task_smpl work properly?
>
> task_smpl gave data, but appeared to get a kernel oops. Output from xterm:
>
> Dec 15 17:13:00 trek kernel: perfmon_p6: family=6 x86_model=8
> Dec 15 17:13:00 trek kernel: P6 core PMU detected
> Dec 15 17:13:00 trek kernel: perfmon: Intel P6 Family Processor PMU
> detected, 2 PMCs, 2 PMDs, 2 counters (31 bits) RW_max:2
> Dec 15 17:13:00 trek kernel: Intel P6 Family Processor PMU installed
> Dec 15 17:13:22 trek kernel: Debug: sleeping function called from
> invalid context at arch/i386/lib/usercopy.c:607
> Dec 15 17:13:22 trek kernel: in_atomic():0, irqs_disabled():1
> Dec 15 17:13:22 trek kernel: [<c020e4e3>] copy_to_user+0x23/0x90
> Dec 15 17:13:22 trek kernel: [<c0205129>] pfm_read+0xa9/0x320
> Dec 15 17:13:22 trek kernel: [<c0121180>] default_wake_function+0x0/0x10
> Dec 15 17:13:22 trek kernel: [<c0205080>] pfm_read+0x0/0x320
> Dec 15 17:13:22 trek kernel: [<c01713e8>] vfs_read+0xb8/0x170
> Dec 15 17:13:22 trek kernel: [<c0171771>] sys_read+0x41/0x70
> Dec 15 17:13:22 trek kernel: [<c010569d>] syscall_call+0x7/0xb
> Dec 15 17:13:22 trek kernel: Unable to handle kernel paging request at
>
> Dec 15 17:13:22 trek kernel: EIP is at pfm_smpl_fmt_put+0x11/0x60
> Dec 15 17:13:22 trek kernel: eax: d61afab0 ebx: 6b6b6b6b ecx:
> d8b3d7a0 edx: d8b3d900
> Dec 15 17:13:22 trek kernel: esi: d1852000 edi: 00000001 ebp:
> 00000001 esp: d1f37ee0
> Dec 15 17:13:22 trek kernel: ds: 007b es: 007b ss: 0068
> Dec 15 17:13:22 trek kernel: Process task_smpl (pid: 2799,
> threadinfo=d1f37000 task=d61afab0)
> Dec 15 17:13:22 trek kernel: Stack: 00000001 c0205803 c0156569 6b000246
> c13163a4 d1f935a0 d1f93614 d22ebb78
> Dec 15 17:13:22 trek kernel: 00000286 00000000 00000010 00000010
> d1f93614 d1f57d3c d22ebb78 c0172475
> Dec 15 17:13:22 trek kernel: 00000000 d1f935a0 d7f8fb68 d1f57d3c
> d1e1011c d2789bcc d7e45dbc 00000001
> Dec 15 17:13:22 trek kernel: Call Trace:
> Dec 15 17:13:22 trek kernel: [<c0205803>] pfm_close+0x113/0x3d0
> Dec 15 17:13:22 trek kernel: [<c0156569>] poison_obj+0x29/0x60
> Dec 15 17:13:22 trek kernel: [<c0172475>] __fput+0xb5/0x1a0
> Dec 15 17:13:22 trek kernel: [<c01625e9>] remove_vma+0x39/0x50
> Dec 15 17:13:22 trek kernel: [<c016477b>] exit_mmap+0xab/0x100
> Dec 15 17:13:22 trek kernel: [<c0123423>] mmput+0x33/0xa0
> Dec 15 17:13:22 trek kernel: [<c0128816>] do_exit+0xf6/0x3d0
> Dec 15 17:13:22 trek kernel: [<c0109da8>] do_syscall_trace+0x218/0x22a
> Dec 15 17:13:22 trek kernel: [<c0128b67>] do_group_exit+0x37/0xa0
> Dec 15 17:13:22 trek kernel: [<c010569d>] syscall_call+0x7/0xb


Attachments:
(No filename) (3.94 kB)
perfmon-2.6.15-rc5-git3-will.diff (2.44 kB)
Download all attachments

2005-12-20 16:08:29

by William Cohen

[permalink] [raw]
Subject: Re: [Perfctr-devel] 2.6.15-rc5-git3 perfmon2 new code base + libpfm available

Stephane Eranian wrote:
> Will,
>
> Ok, I found the two bugs you ran into. I also found
> a third one somewhat similar.
>
> Could you try the attached patch on top of what
> you have?
>
> I will check all the copy_from/to() tomorrow.
>
> Thanks.

Have you tried running the examples without the kernel module installed?
I think that one of the tracebacks in the earlier email was due to that.
Like the following:

Dec 20 10:39:01 trek kernel: Call Trace:
Dec 20 10:39:01 trek kernel: [<c0201ee7>] __pfm_create_context+0x167/0x440
Dec 20 10:39:01 trek kernel: [<c010400c>] __switch_to+0x15c/0x220
Dec 20 10:39:01 trek kernel: [<c0203f98>] sys_pfm_create_context+0x78/0xe0
Dec 20 10:39:01 trek kernel: [<c010569d>] syscall_call+0x7/0xb

I tried the patch. Things are still not working on the p6 machine with
the module installed. for "./task_smpl ls". The associated kernel backtrace:


Dec 20 10:29:47 trek kernel: Unable to handle kernel paging request at
virtual address 6b6b6ba7
Dec 20 10:29:47 trek kernel: printing eip:
Dec 20 10:29:47 trek kernel: c0202b51
Dec 20 10:29:47 trek kernel: *pde = 00000000
Dec 20 10:29:47 trek kernel: Oops: 0000 [#1]
Dec 20 10:29:47 trek kernel: SMP
Dec 20 10:29:47 trek kernel: Modules linked in: perfmon_p6 ipv6 lp
autofs4 rfcomm l2cap bluetooth sunrpc ipt_REJECT ipt_state ip_conntrack
nfnetlink iptable_filter ip_tables dm_mirror dm_mod video button battery
ac parport_pc parport snd_cs46xx snd_seq_dummy snd_emu10k1_synth
snd_emux_synth snd_seq_virmidi snd_seq_midi_emul snd_seq_oss
snd_seq_midi_event snd_emu10k1 snd_seq snd_rawmidi snd_pcm_oss
snd_seq_device snd_mixer_oss snd_ac97_codec snd_ac97_bus snd_pcm
snd_util_mem emu10k1_gp floppy gameport 3c59x snd_hwdep snd_timer snd
snd_page_alloc soundcore mii uhci_hcd hw_random i2c_i801 shpchp i2c_core
ext3 jbd
Dec 20 10:29:47 trek kernel: CPU: 1
Dec 20 10:29:47 trek kernel: EIP: 0060:[<c0202b51>] Not tainted VLI
Dec 20 10:29:47 trek kernel: EFLAGS: 00010282 (2.6.15-rc5-git3-perfop)
Dec 20 10:29:47 trek kernel: EIP is at pfm_smpl_fmt_put+0x11/0x60
Dec 20 10:29:47 trek kernel: eax: d6cc3ab0 ebx: 6b6b6b6b ecx:
d8be87a0 edx: d8be8900
Dec 20 10:29:47 trek kernel: esi: d2434000 edi: 00000001 ebp:
00000001 esp: d707cee0
Dec 20 10:29:47 trek kernel: ds: 007b es: 007b ss: 0068
Dec 20 10:29:47 trek kernel: Process task_smpl (pid: 2574,
threadinfo=d707c000 task=d6cc3ab0)
Dec 20 10:29:47 trek kernel: Stack: 00000001 c0205813 c0156569 6b000246
c1336ae0 d2ab36e8 d2ab375c d7203548
Dec 20 10:29:47 trek kernel: 00000286 00000000 00000010 00000010
d2ab375c d2b8ab58 d7203548 c0172475
Dec 20 10:29:47 trek kernel: 00000000 d2ab36e8 d7f8fb68 d2b8ab58
d245dc7c d2f18664 d7276d9c 00000001
Dec 20 10:29:47 trek kernel: Call Trace:
Dec 20 10:29:47 trek kernel: [<c0205813>] pfm_close+0x113/0x3d0
Dec 20 10:29:47 trek kernel: [<c0156569>] poison_obj+0x29/0x60
Dec 20 10:29:47 trek kernel: [<c0172475>] __fput+0xb5/0x1a0
Dec 20 10:29:47 trek kernel: [<c01625e9>] remove_vma+0x39/0x50
Dec 20 10:29:47 trek kernel: [<c016477b>] exit_mmap+0xab/0x100
Dec 20 10:29:47 trek kernel: [<c0123423>] mmput+0x33/0xa0
Dec 20 10:29:47 trek kernel: [<c0128816>] do_exit+0xf6/0x3d0
Dec 20 10:29:47 trek kernel: [<c0109da8>] do_syscall_trace+0x218/0x22a
Dec 20 10:29:47 trek kernel: [<c0128b67>] do_group_exit+0x37/0xa0
Dec 20 10:29:47 trek kernel: [<c010569d>] syscall_call+0x7/0xb
Dec 20 10:29:47 trek kernel: Code: 00 01 00 00 ff 00 b8 80 4c 44 c0 e8
aa d2 16 00 89 d8 5b c3 31 db eb ee 89 f6 85 c0 53 89 c3 74 39 b8 80 4c
44 c0 e8 6f d2 16 00 <8b> 53 3c 85 d2 74 1b b8 00 f0 ff ff 21 e0 8b 40
10 c1 e0 07 8d
Dec 20 10:29:47 trek kernel: <1>Fixing recursive fault but reboot is
needed!

-Will

2005-12-20 16:54:49

by Matthew Wilcox

[permalink] [raw]
Subject: Re: [Perfctr-devel] 2.6.15-rc5-git3 perfmon2 new code base + libpfm available

On Tue, Dec 20, 2005 at 11:05:02AM -0500, William Cohen wrote:
> Dec 20 10:29:47 trek kernel: Unable to handle kernel paging request at
> virtual address 6b6b6ba7

mm/slab.c:#define POISON_FREE 0x6b /* for use-after-free poisoning */

2005-12-20 18:09:43

by Stephane Eranian

[permalink] [raw]
Subject: 2.6.15-rc6 updated perfmon2 patch

Hi,

I have released another verison of the perfmon2 new code base.
This one is relative to 2.6.15-rc6 and hopefully should
fix some of the problems people have reported.

This new kernel patch fixes the following:
- kernel panic in perfmon_pmu.c or perfmon_fmt.c
if PMU description or buffer format is compiled in.

- missing __user in perfmon_syscalls.c

- better handling of NMI reservation for X86-64, EM64T
and i386.

You MUST use libpfm-3.2-051215 with this kernel due to
interface change for pfm_create_context().

As usual, you can download the latest packages from the
SourceForge website at:

http://www.sf.net/projects/perfmon2

--
-Stephane

2005-12-21 22:10:58

by Stephane Eranian

[permalink] [raw]
Subject: new 2.6.15-rc6 perfmon2 patch

Hi,

I have released YET another version of the perfmon2 new code base.
This one is STILL relative to 2.6.15-rc6 and is called 2.6.15-rc6-v2.
This one DOES fix the panic on pfm_fmt_put()!

This patch includes compared to initial 2.6.15-rc6:

- quick overview of perfmon2 README

- fix the kernel panic on pfm_fmt_put()

- save/restore of PMU state when NMI watchdog is
enabled.

- reinforced checks in register_smpl_fmt()

- revised checks to detect if a format/PMU description is
builtin or module

- sampling formats can now export the notification
message queue depth they require.

- MIPS patch updated to latest fixes.

You MUST use libpfm-3.2-051215 with this kernel due to
interface change for pfm_create_context().
As usual, you can download the latest packages from the
SourceForge website at:

http://www.sf.net/projects/perfmon2

This will hopefully be the last release for this year.

Happy Holidays.

--
-Stephane