Hello,
I m trying to capture and decode PTM trace from Cortex A9 dual core.
I m successful in configuring the driver(arch/arm/kernel/etm.c) and setting the funnel to get data in ETB. But I don't know how to decode these traces.
Anyone has any pointers?
Thanks, Arun
Hi Arun,
You can think of the trace in the ETB as the raw stream resulting from the multiplexing of different trace streams. So to get to the PTM trace you'll first have to de-multiplex the stream, and then decode the stream based on the source - in this case PTM.
The format of the data stored in the ETB is described in the ETM TRM Section 9.6 (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0314h/Bgbhhid...). The decoding should give you a trace stream for each active trace source. The ATBID can be used to de-multiplex multiple sources, e.g., the two PTMs associated with the two A9s.
The PTM stream can then be decoded using the Program Flow Trace Protocol described in Program Flow Trace Architecture Specification Section 4 (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0035b/Chddbbd...).
Out of curiosity, may I ask what are you trying to do?
Hope this helps. Feel free to ask for clarification.
Cheers, Punit
On 14/11/12 14:04, Arun KS wrote:
Hello,
I m trying to capture and decode PTM trace from Cortex A9 dual core.
I m successful in configuring the driver(arch/arm/kernel/etm.c) and setting the funnel to get data in ETB. But I don't know how to decode these traces.
Anyone has any pointers?
Thanks, Arun
linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev
-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hello Punit,
On Wed, Nov 14, 2012 at 8:28 PM, Punit Agrawal punit.agrawal@arm.com wrote:
Hi Arun,
You can think of the trace in the ETB as the raw stream resulting from the multiplexing of different trace streams. So to get to the PTM trace you'll first have to de-multiplex the stream, and then decode the stream based on the source - in this case PTM.
The format of the data stored in the ETB is described in the ETM TRM Section 9.6 (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0314h/Bgbhhid...). The decoding should give you a trace stream for each active trace source. The ATBID can be used to de-multiplex multiple sources, e.g., the two PTMs associated with the two A9s.
The PTM stream can then be decoded using the Program Flow Trace Protocol described in Program Flow Trace Architecture Specification Section 4 (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0035b/Chddbbd...).
So do you mean that there is no open source tool which decodes this as of now and I have to write one?
Out of curiosity, may I ask what are you trying to do?
The main intention is to debug freeze issues using PTM traces. When a device is in freeze, my intention is to collect PTM traces from ETB and decode. So that I ll get traces of last few branches and exceptions.
Thanks, Arun
Hope this helps. Feel free to ask for clarification.
Cheers, Punit
On 14/11/12 14:04, Arun KS wrote:
Hello,
I m trying to capture and decode PTM trace from Cortex A9 dual core.
I m successful in configuring the driver(arch/arm/kernel/etm.c) and setting the funnel to get data in ETB. But I don't know how to decode these traces.
Anyone has any pointers?
Thanks, Arun
linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev
-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
On 14/11/12 15:13, Arun KS wrote:
Hello Punit,
On Wed, Nov 14, 2012 at 8:28 PM, Punit Agrawal punit.agrawal@arm.com wrote:
Hi Arun,
You can think of the trace in the ETB as the raw stream resulting from the multiplexing of different trace streams. So to get to the PTM trace you'll first have to de-multiplex the stream, and then decode the stream based on the source - in this case PTM.
The format of the data stored in the ETB is described in the ETM TRM Section 9.6 (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0314h/Bgbhhid...). The decoding should give you a trace stream for each active trace source. The ATBID can be used to de-multiplex multiple sources, e.g., the two PTMs associated with the two A9s.
After sending the previous email, I had a quick look at etm.c and noticed that it configures the ETB formatter to run in "Bypass" mode, i.e., it doesn't introduce any formatting into the trace stream.
The PTM stream can then be decoded using the Program Flow Trace Protocol described in Program Flow Trace Architecture Specification Section 4 (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0035b/Chddbbd...).
So do you mean that there is no open source tool which decodes this as of now and I have to write one?
I don't know of any open source tool to decode PTM trace.
But in light of the above finding, decoding only PTM trace should give you the information you are after.
Hope that makes it a little bit easier.
Punit
Out of curiosity, may I ask what are you trying to do?
The main intention is to debug freeze issues using PTM traces. When a device is in freeze, my intention is to collect PTM traces from ETB and decode. So that I ll get traces of last few branches and exceptions.
Thanks, Arun
Hope this helps. Feel free to ask for clarification.
Cheers, Punit
On 14/11/12 14:04, Arun KS wrote:
Hello,
I m trying to capture and decode PTM trace from Cortex A9 dual core.
I m successful in configuring the driver(arch/arm/kernel/etm.c) and setting the funnel to get data in ETB. But I don't know how to decode these traces.
Anyone has any pointers?
Thanks, Arun
linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev
-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
On Wed, Nov 14, 2012 at 6:04 AM, Arun KS arunks.linux@gmail.com wrote:
Hello,
I m trying to capture and decode PTM trace from Cortex A9 dual core.
I m successful in configuring the driver(arch/arm/kernel/etm.c) and setting the funnel to get data in ETB. But I don't know how to decode these traces.
Anyone has any pointers?
Thanks, Arun
I attached some tools I use to decode the traces. I have used this on the A8, A9 and A15. I assume since you cc-ed me you have already applied the kernel patches I posted a while back. Without them you will not get useful trace data from a dual core processor.
Hello Arve,
On Thu, Nov 15, 2012 at 4:55 AM, Arve Hjønnevåg arve@android.com wrote:
On Wed, Nov 14, 2012 at 6:04 AM, Arun KS arunks.linux@gmail.com wrote:
Hello,
I m trying to capture and decode PTM trace from Cortex A9 dual core.
I m successful in configuring the driver(arch/arm/kernel/etm.c) and setting the funnel to get data in ETB. But I don't know how to decode these traces.
Anyone has any pointers?
Thanks, Arun
I attached some tools I use to decode the traces. I have used this on the A8, A9 and A15. I assume since you cc-ed me you have already applied the kernel patches I posted a while back. Without them you will not get useful trace data from a dual core processor.
Thank you very much for the tools. Hope I have taken all your patches.
Here is how my git log --oneline looks on arch/arm/kernel/etm.c
75cbaea ARM: etm: Add sysfs entry to enable return stack if supported 434032a ARM: etm: Add sysfs entry to disable branch_output flag c6b1c35 ARM: etm: Add sysfs entry to set context-id-size cfb8dc5 ARM: etm: Add sysfs entry to enable timestamps if supported d263bc7 ARM: etm: Check arch version and disable data tracing for ptm eff62a8 ARM: etm: Wait for etm/ptm(s) to stop before requesting PowerDown 4246983 ARM: etm: Power down etm(s) when tracing is not enabled 992cd59 ARM: etm: Support multiple ETMs/PTMs. 3a91f3e ARM: etm: Return the entire trace buffer if it is empty after reset fe05bda ARM: etm: Add some missing locks and error checks 0c3da53 ARM: etm: Configure data tracing d71c695 ARM: etm: Allow range selection f13ae47 ARM: etm: Don't try to clear the buffer full status after reading the buffer 8511b5b ARM: etm: Don't limit tracing to only non-secure code. d387659 ARM: etm: Don't require clock control 73017a5 arm: fix implicit module.h users by adding it to arch/arm as required. 8e88069 ARM: 6838/1: etm: fix section mismatch warning aa25afa ARM: amba: make probe() functions take const id tables 092e0e7 Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 6038f37 llseek: automatically add .llseek fop 8234eae ARM: 6291/1: coresight: move struct tracectx inside etm driver 1495cc9 Input: sysrq - drop tty argument from sysrq ops handlers 988257c ARM: 6294/1: etm: do a dummy read from OSSRR during initialization 9e354ea ARM: 6292/1: coresight: add ETM management registers c5d6c77 ARM: 5841/1: a driver for on-chip ETM and ETB
I ll let you know the results.
thanks, Arun
-- Arve Hjønnevåg
Hello Arve,
On Thu, Nov 15, 2012 at 9:11 AM, Arun KS arunks.linux@gmail.com wrote:
Hello Arve,
On Thu, Nov 15, 2012 at 4:55 AM, Arve Hjønnevåg arve@android.com wrote:
On Wed, Nov 14, 2012 at 6:04 AM, Arun KS arunks.linux@gmail.com wrote:
Hello,
I m trying to capture and decode PTM trace from Cortex A9 dual core.
I m successful in configuring the driver(arch/arm/kernel/etm.c) and setting the funnel to get data in ETB. But I don't know how to decode these traces.
Anyone has any pointers?
Thanks, Arun
I attached some tools I use to decode the traces. I have used this on the A8, A9 and A15. I assume since you cc-ed me you have already applied the kernel patches I posted a while back. Without them you will not get useful trace data from a dual core processor.
Thank you very much for the tools. Hope I have taken all your patches.
Here is how my git log --oneline looks on arch/arm/kernel/etm.c
75cbaea ARM: etm: Add sysfs entry to enable return stack if supported 434032a ARM: etm: Add sysfs entry to disable branch_output flag c6b1c35 ARM: etm: Add sysfs entry to set context-id-size cfb8dc5 ARM: etm: Add sysfs entry to enable timestamps if supported d263bc7 ARM: etm: Check arch version and disable data tracing for ptm eff62a8 ARM: etm: Wait for etm/ptm(s) to stop before requesting PowerDown 4246983 ARM: etm: Power down etm(s) when tracing is not enabled 992cd59 ARM: etm: Support multiple ETMs/PTMs. 3a91f3e ARM: etm: Return the entire trace buffer if it is empty after reset fe05bda ARM: etm: Add some missing locks and error checks 0c3da53 ARM: etm: Configure data tracing d71c695 ARM: etm: Allow range selection f13ae47 ARM: etm: Don't try to clear the buffer full status after reading the buffer 8511b5b ARM: etm: Don't limit tracing to only non-secure code. d387659 ARM: etm: Don't require clock control 73017a5 arm: fix implicit module.h users by adding it to arch/arm as required. 8e88069 ARM: 6838/1: etm: fix section mismatch warning aa25afa ARM: amba: make probe() functions take const id tables 092e0e7 Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 6038f37 llseek: automatically add .llseek fop 8234eae ARM: 6291/1: coresight: move struct tracectx inside etm driver 1495cc9 Input: sysrq - drop tty argument from sysrq ops handlers 988257c ARM: 6294/1: etm: do a dummy read from OSSRR during initialization 9e354ea ARM: 6292/1: coresight: add ETM management registers c5d6c77 ARM: 5841/1: a driver for on-chip ETM and ETB
I ll let you know the results.
I m able to see decoded ptm traces using the following command, python3.1 etm-objdump.py --trace-decoder=./etm --trace-decoder-options="--pft-1.1 --sourceid-match 2" ptm.bin
Thanks, Arun
thanks, Arun
-- Arve Hjønnevåg