Hello Mathieu,
Thank for the config file. It works. I was able to build the OpenCSD kernel (form the perf-opencsd-master branch) and install on the USB (I used the ArchLinuxARM-aarch64-latest.tar.gz). I also built the perf tool (make -C tools/perf). Everything is booting but the perf has some issues:
[root@alarm home]# ./perf record -vvv -e cs_etm/@20070000.etr/u --per-thread uname map_groups__set_modules_path_dir: cannot open /lib/modules/4.13.0-rc1-ge565ad6 dir Problems setting modules path maps, continuing anyway... ------------------------------------------------------------ perf_event_attr: type 8 size 112 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 enable_on_exec 1 sample_id_all 1 ------------------------------------------------------------ sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 4 ------------------------------------------------------------ perf_event_attr: type 1 size 112 config 0x9 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 enable_on_exec 1 task 1 sample_id_all 1 mmap2 1 comm_exec 1 ------------------------------------------------------------ sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 5 mmap size 528384B AUX area mmap length 4194304 perf event ring buffer mmapped per thread failed to mmap AUX area failed to mmap with 12 (Cannot allocate memory)
I fixed the "map_groups__set_modules_path_dir: cannot open /lib/modules/4.13.0-rc1-ge565ad6 dir" issue by adding appropriate symbolic link but I still have an issue with the mmap. Any idea what can be wrong here (below limits that I have on my Juno)?
[root@alarm ~]# ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31798 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 31798 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@alarm ~]#
Regards Marek
W dniu 2017-08-18 16:54:42 użytkownik Mathieu Poirier mathieu.poirier@linaro.org napisał:
On 18 August 2017 at 04:22, marekzmyslowski marekzmyslowski@poczta.onet.pl wrote:
Hello Mathieu,
I've decided that currently I don't need Android. The Linux is enough.
That is probably a better place to start.
However I have another issue. I've downloaded the perf-opencsd-master branch. I run the config with the ARCH=arm64 and CROSS_COMPLIE=aarch64-linux-gnu- and added support for Versatile board. Then I compiled kernel - everything was OK. Next I built the USB using the following instruction: https://archlinuxarm.org/platforms/armv8/arm/juno (it works fine. The linux boot on the Juno). Next I copied the Image file and juno.dtb into the USB but it doesn't boot. It hangs here:
initrd: address 0x0 initrd: length 0x0 PEI 1132 ms DXE 1695 ms BDS 368934875444 ms BDS 368934873448 ms BDS 1535 ms Total Time = 368934871781 ms
linux: address 0x80080000 linux: length 0x1150200 fdt: address 0x9FE00000 fdt: length 0x5F54
Any idea what I'm doing wrong? Any help will be appreciated (I'm so close to have Juno + CoreSight + perf :) )
I can't help you with booting the board itself. The best I can do is advise to use u-boot instead of UEFI and give you my kernel .config file (attached). For the rest there is plenty of documentation out there.
Regards Marek
W dniu 2017-08-16 23:08:04 użytkownik Mathieu Poirier mathieu.poirier@linaro.org napisał:
Hello Marek,
Please CC the CoreSight mailing list when asking questions as someone else may also be able to answer.
First and foremost I advise using the official CoreSight kernel found on the openCSD site [1] rather than my personal branch [2] - you never know what you'll get with the latter.
That being said the CoreSight kernel on the openCSD site is not an Android kernel - it is simply a mainline kernel supplemented with patches that haven't made their way to mainline yet. You will have to either add the android patches to the CoreSight kernel or the other way around (CoreSight patches on android kernel).
Android user space is also different and does not include the perf-tools. You will have to add them manually along with the dependencies they require. I haven't gone through that process and as such can't advise more on that portion.
Get back to me with your questions if the above isn't sufficient.
Best regards, Mathieu
[1]. https://github.com/Linaro/OpenCSD/tree/perf-opencsd-master [2]. https://git.linaro.org/people/mathieu.poirier/coresight.git/
On 16 August 2017 at 14:32, marekzmyslowski marekzmyslowski@poczta.onet.pl wrote:
Hello Mathieu,
I'm sorry for bothering but I think you may be person that can help me. I'm trying to install and run Android on Juno Board r0. I tested Android 17.05 from Linaro and it works. Now I'm trying to have a perf using Coresight but I'm little confused. Do I need to build Android from Linaro and the kernel from here https://git.linaro.org/people/mathieu.poirier/coresight.git/ or here https://github.com/Linaro/OpenCSD/tree/perf-opencsd-4.12. Any help with this will be appreciated :)
Regards Marek Zmysłowski
On 4 September 2017 at 04:35, marekzmyslowski marekzmyslowski@poczta.onet.pl wrote:
Hello Mathieu,
Thank for the config file. It works. I was able to build the OpenCSD kernel (form the perf-opencsd-master branch) and install on the USB (I used the ArchLinuxARM-aarch64-latest.tar.gz). I also built the perf tool (make -C tools/perf). Everything is booting but the perf has some issues:
[root@alarm home]# ./perf record -vvv -e cs_etm/@20070000.etr/u --per-thread uname map_groups__set_modules_path_dir: cannot open /lib/modules/4.13.0-rc1-ge565ad6 dir Problems setting modules path maps, continuing anyway...
perf_event_attr: type 8 size 112 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 enable_on_exec 1 sample_id_all 1
sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 4
perf_event_attr: type 1 size 112 config 0x9 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 enable_on_exec 1 task 1 sample_id_all 1 mmap2 1 comm_exec 1
sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 5 mmap size 528384B AUX area mmap length 4194304 perf event ring buffer mmapped per thread failed to mmap AUX area failed to mmap with 12 (Cannot allocate memory)
This is a classic problem and _usually_ related to something going wrong when calling kernel function etm_setup_aux() - that is where I'd start looking. The bad news is that you will have to debug this on your own as this is likely to be platform specific. If you want to experiment with a platform that works I suggest purchasing a dragonboard 410c. I test with that platform on a regular basis.
[1].http://elixir.free-electrons.com/linux/latest/source/drivers/hwtracing/cores...
I fixed the "map_groups__set_modules_path_dir: cannot open /lib/modules/4.13.0-rc1-ge565ad6 dir" issue by adding appropriate symbolic link but I still have an issue with the mmap. Any idea what can be wrong here (below limits that I have on my Juno)?
Forget about that error message - that is just perf being pugnacious. The CoreSight infrastructure has nothing to do with modules.
Mathieu
[root@alarm ~]# ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31798 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 31798 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@alarm ~]#
Regards Marek
W dniu 2017-08-18 16:54:42 użytkownik Mathieu Poirier mathieu.poirier@linaro.org napisał:
On 18 August 2017 at 04:22, marekzmyslowski marekzmyslowski@poczta.onet.pl wrote:
Hello Mathieu,
I've decided that currently I don't need Android. The Linux is enough.
That is probably a better place to start.
However I have another issue. I've downloaded the perf-opencsd-master branch. I run the config with the ARCH=arm64 and CROSS_COMPLIE=aarch64-linux-gnu- and added support for Versatile board. Then I compiled kernel - everything was OK. Next I built the USB using the following instruction: https://archlinuxarm.org/platforms/armv8/arm/juno (it works fine. The linux boot on the Juno). Next I copied the Image file and juno.dtb into the USB but it doesn't boot. It hangs here:
initrd: address 0x0 initrd: length 0x0 PEI 1132 ms DXE 1695 ms BDS 368934875444 ms BDS 368934873448 ms BDS 1535 ms Total Time = 368934871781 ms
linux: address 0x80080000 linux: length 0x1150200 fdt: address 0x9FE00000 fdt: length 0x5F54
Any idea what I'm doing wrong? Any help will be appreciated (I'm so close to have Juno + CoreSight + perf :) )
I can't help you with booting the board itself. The best I can do is advise to use u-boot instead of UEFI and give you my kernel .config file (attached). For the rest there is plenty of documentation out there.
Regards Marek
W dniu 2017-08-16 23:08:04 użytkownik Mathieu Poirier mathieu.poirier@linaro.org napisał:
Hello Marek,
Please CC the CoreSight mailing list when asking questions as someone else may also be able to answer.
First and foremost I advise using the official CoreSight kernel found on the openCSD site [1] rather than my personal branch [2] - you never know what you'll get with the latter.
That being said the CoreSight kernel on the openCSD site is not an Android kernel - it is simply a mainline kernel supplemented with patches that haven't made their way to mainline yet. You will have to either add the android patches to the CoreSight kernel or the other way around (CoreSight patches on android kernel).
Android user space is also different and does not include the perf-tools. You will have to add them manually along with the dependencies they require. I haven't gone through that process and as such can't advise more on that portion.
Get back to me with your questions if the above isn't sufficient.
Best regards, Mathieu
[1]. https://github.com/Linaro/OpenCSD/tree/perf-opencsd-master [2]. https://git.linaro.org/people/mathieu.poirier/coresight.git/
On 16 August 2017 at 14:32, marekzmyslowski marekzmyslowski@poczta.onet.pl wrote:
Hello Mathieu,
I'm sorry for bothering but I think you may be person that can help me. I'm trying to install and run Android on Juno Board r0. I tested Android 17.05 from Linaro and it works. Now I'm trying to have a perf using Coresight but I'm little confused. Do I need to build Android from Linaro and the kernel from here https://git.linaro.org/people/mathieu.poirier/coresight.git/ or here https://github.com/Linaro/OpenCSD/tree/perf-opencsd-4.12. Any help with this will be appreciated :)
Regards Marek Zmysłowski
On 09/05/2017 03:37 PM, Mathieu Poirier wrote:
On 4 September 2017 at 04:35, marekzmyslowski marekzmyslowski@poczta.onet.pl wrote:
Hello Mathieu,
Thank for the config file. It works. I was able to build the OpenCSD kernel (form the perf-opencsd-master branch) and install on the USB (I used the ArchLinuxARM-aarch64-latest.tar.gz). I also built the perf tool (make -C tools/perf). Everything is booting but the perf has some issues:
[root@alarm home]# ./perf record -vvv -e cs_etm/@20070000.etr/u --per-thread uname map_groups__set_modules_path_dir: cannot open /lib/modules/4.13.0-rc1-ge565ad6 dir Problems setting modules path maps, continuing anyway...
perf_event_attr: type 8 size 112 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 enable_on_exec 1 sample_id_all 1
sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 4
perf_event_attr: type 1 size 112 config 0x9 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 enable_on_exec 1 task 1 sample_id_all 1 mmap2 1 comm_exec 1
sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 5 mmap size 528384B AUX area mmap length 4194304 perf event ring buffer mmapped per thread failed to mmap AUX area failed to mmap with 12 (Cannot allocate memory)
This is a classic problem and _usually_ related to something going wrong when calling kernel function etm_setup_aux() - that is where I'd start looking. The bad news is that you will have to debug this on your own as this is likely to be platform specific. If you want to experiment with a platform that works I suggest purchasing a dragonboard 410c. I test with that platform on a regular basi
It is kind of not helpful, when the setup_aux fails to setup a path from the source to sink and still returns -ENOMEM :-(. I will see if I can fix this in the generic driver.
Are you able to do normal sysfs mode tracing ?
Cheers Suzuki
On 17/05/18 12:10, Suzuki K Poulose wrote:
On 09/05/2017 03:37 PM, Mathieu Poirier wrote:
On 4 September 2017 at 04:35, marekzmyslowski marekzmyslowski@poczta.onet.pl wrote:
Hello Mathieu,
Thank for the config file. It works. I was able to build the OpenCSD kernel (form the perf-opencsd-master branch) and install on the USB (I used the ArchLinuxARM-aarch64-latest.tar.gz). I also built the perf tool (make -C tools/perf). Everything is booting but the perf has some issues:
[root@alarm home]# ./perf record -vvv -e cs_etm/@20070000.etr/u --per-thread uname map_groups__set_modules_path_dir: cannot open /lib/modules/4.13.0-rc1-ge565ad6 dir Problems setting modules path maps, continuing anyway...
perf_event_attr: type 8 size 112 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 enable_on_exec 1 sample_id_all 1
sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 4
perf_event_attr: type 1 size 112 config 0x9 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 enable_on_exec 1 task 1 sample_id_all 1 mmap2 1 comm_exec 1
sys_perf_event_open: pid 2242 cpu -1 group_fd -1 flags 0x8 = 5 mmap size 528384B AUX area mmap length 4194304 perf event ring buffer mmapped per thread failed to mmap AUX area failed to mmap with 12 (Cannot allocate memory)
This is a classic problem and _usually_ related to something going wrong when calling kernel function etm_setup_aux() - that is where I'd start looking. The bad news is that you will have to debug this on your own as this is likely to be platform specific. If you want to experiment with a platform that works I suggest purchasing a dragonboard 410c. I test with that platform on a regular basi
It is kind of not helpful, when the setup_aux fails to setup a path from the source to sink and still returns -ENOMEM :-(. I will see if I can fix this in the generic driver.
Are you able to do normal sysfs mode tracing ?
Also, have you tried manually enabling the sink (in this case ETR) every single time before running perf ?
ie. :
echo 1 > /sys/bus/coresight/devices/2070000.etr/enable_sink
That seemed to solve the issue for me in the past with older kernel/perf tools. With 4.17 at least I don't need to do it manually.
Cheers Suzuki