Hi all. I'm running oprofile on a ppc 603 (in timer mode) and believe I'm getting reports on samples for the wrong symbol/function.
When running opreport for a specific network module (MyEth), I get a number of samples reported in a function (below: MyCos_Init) used when loading the module. This occurs for every test (iperf), although I reset the profiling data in between I do not reload the module for each run, so there should be no reason for the opreport to report samples for this function. I've also instrumented the module, to verify that i do not call the MyCos_Init repeatedly (in fact it is not called at all after I've loaded it) The report looks like this.. >~# opreport -l -p /lib/modules/ MyEth Overflow stats not available CPU: CPU with timer interrupt, speed 0 MHz (estimated) Profiling through timer interrupt warning: could not check that the binary file /lib/modules/MyEth has not been modified since the profile was taken. Results may be inaccurate. samples % symbol name 228 39.3782 MyEth_TxThread 219 37.8238 MyEth_TxDone 83 14.3351 MyCos_Init 49 8.4629 MyEth_start_xmit Looking at a more detailed report (with "-d" option in opreport), I see where the samples for the function MyCos_Init are taken (from address 230c to 238c). MyCos_Init is located at 1e3c. 00001e3c 83 14.3351 MyCos_Init 0000230c 9 10.8434 00002318 5 6.0241 0000231c 1 1.2048 00002324 9 10.8434 00002338 21 25.3012 0000233c 2 2.4096 00002344 10 12.0482 0000237c 14 16.8675 00002384 10 12.0482 0000238c 2 2.4096 Running "nm -n /lib/modules/MyEth" to list symbols (sorted), I find the MyCos_Init at the bottom of the list (Last function / higest address). Is Oprofile just reporting defaulting to the last symbol if it can find any reasonable symbol/function? If I then look in "/proc/kallsyms" I find where the function is located, and see there are functions below it belonging to my module. The list shows me that the function MyCos_Init takes 3E8 address.. c9088e3c t MyCos_Init [MyEth] c9089224 t MyEth_p_cleanup [MyEth] c90892a4 t MyEth_exit [MyEth] c90892a4 t cleanup_module [MyEth] c9089e58 r __func__.0 [MyEth] c9089e60 r __func__.1 [MyEth] Then finally. Adding 3E8 (size allocated for function in kernel) to the address found from "opreport" /"nm" for the MyCos_Init function ( 0x00001e3c) I get 0x00002224. So the reported samples from opreport is after the addresses for this function. So is oprofile reporting samples for a wrong function or what? Or I'm I doing something wrong? Thanks for any assistance. Best Regards Preben
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev