Hi Al,
On Fri, Nov 02, 2018 at 12:08:04PM +0000, Al Grant wrote:
Now I still don't understand how the dso/map support "/proc/kallsyms" and have no idea to fix this issue, though I spent some time to look into it.
The way this is supported is that at record time, pseudo mmap records are created for the kernel. But depending on permissions these might not get created. This isn't just an ETM issue, it can happen on Intel too.
Agree, I also think this is not a specific issue only for Arm platform, this should be one common issue for how to parse kernel symbols with kallsyms file.
What do you see in "perf report -D", do you see a PERF_RECORD_MMAP record for "[kernel.kallsyms]_text" and possibly some others for loadable kernel modules in /lib/modules?
Yes, I can see PERF_RECORD_MMAP for "[kernel.kallsyms]_text".
0x350 [0x50]: event: 1 . . ... raw event: size 80 bytes . 0000: 01 00 00 00 01 00 50 00 ff ff ff ff 00 00 00 00 ......P......... . 0010: 00 00 08 08 00 00 ff ff ff ff f7 f7 ff ff 00 00 ................ . 0020: 00 00 08 08 00 00 ff ff 5b 6b 65 72 6e 65 6c 2e ........[kernel. . 0030: 6b 61 6c 6c 73 79 6d 73 5d 5f 74 65 78 74 00 00 kallsyms]_text.. . 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0x350 [0x50]: PERF_RECORD_MMAP -1/0: [0xffff000008080000(0xfffff7f7ffff) @ 0xffff000008080000]: x [kernel.kallsyms]_text
Below is the infor for checking buildid:
root@debian:~/coresight_test# perf buildid-list 0242d9154c78df1d8fe1d0512c36a236d0861a18 [kernel.kallsyms] b8c89e8ba41a2ea486c66a50c29c60d38c34a759 /root/coresight_test/main 26b12a9d1a54ed2b0478cb0203435b76aabab3fb /usr/lib/aarch64-linux-gnu/ld-2.27.so 8fca7ed524c9469b065af83bc8a529fe72858f53 [vdso] 25829a59e21012cfde7850b30a310cd3a58f531c /root/coresight_test/libcstest.so 70512527439ef76c8802a7a2a546bde6a5a6e967 /usr/lib/aarch64-linux-gnu/libc-2.27.so root@debian:~/coresight_test# ls ~/.debug/[kernel.kallsyms]/0242d9154c78df1d8fe1d0512c36a236d0861a18/ kallsyms
Does it all work if you run perf record as sudo? Or if you do
sudo sysctl kernel.kptr_restrict=0
before you run perf record?
Yes, tested this on Juno board with Debian rootFS and logined in with 'root' user. I suspected the pointer permission issue so checked with below command:
root@debian:~/coresight_test# cat /proc/sys/kernel/kptr_restrict 0
Thanks, Leo Yan