Hello,
I will look in more details in code you mentioned.
While below is the Auxtrace info:
. 0000: 46 00 00 00 00 00 70 00 03 00 00 00 00 00 00 00 F.....p......... . 0010: 00 00 00 00 00 00 00 00 01 00 00 00 07 00 00 00 ................ . 0020: 00 00 00 00 00 00 00 00 40 40 40 40 40 40 40 40 ........@@@@@@@@ . 0030: 01 00 00 00 00 00 00 00 40 08 00 00 00 00 00 00 ........@....... . 0040: 12 00 00 00 00 00 00 00 01 02 00 26 00 00 00 00 ...........&.... . 0050: 30 f4 00 43 00 00 00 00 88 10 00 20 00 00 00 00 0ô.C....... .... . 0060: 00 00 00 00 00 00 00 00 cc 00 00 00 00 00 00 00 ........Ì.......
0 0 0x178 [0x70]: PERF_RECORD_AUXTRACE_INFO type: 3 Header version 0 PMU type/num cpus 700000001 Snapshot 0 Magic number 4040404040404040 CPU 1 TRCCONFIGR 840 TRCTRACEIDR 12 TRCIDR0 26000201 TRCIDR1 4300f430 TRCIDR2 20001088 TRCIDR8 0 TRCAUTHSTATUS cc
Thanks -Bharat
-----Original Message----- From: Leo Yan leo.yan@linaro.org Sent: Tuesday, November 5, 2019 7:03 PM To: Bharat Bhushan bbhushan2@marvell.com Cc: Coresight ML coresight@lists.linaro.org Subject: Re: [EXT] Re: perf: user-space trace decoding
On Tue, Nov 05, 2019 at 12:51:24PM +0000, Bharat Bhushan wrote:
Hello,
Below is output of "perf --debug verbose=10 report --stdio >
perf_report_dbg.log"
It fails with type 0x70. Is this "ignore packet header "? It should workn because
Earlier I have seen this failing with "Reserved Packet" as h/w was ETM4.2
but it adds "Ignore Packet - 0x70".
Now I changed the TRCIDR1 to read out as 0x4.3 (git diff in the end). Maybe
I missed something.
[...]
0x178 [0x70]: failed to process type: 70 Error: failed to process sample
It should be related with auxtrace info handling.
We can use 'perf script -D' to dump related info, e.g. I can see auxtrace info as below for CoreSight:
# perf script -D
[...]
0 0 0x178 [0x70]: PERF_RECORD_AUXTRACE_INFO type: 3 Header version 0 PMU type/num cpus 900000001 Snapshot 0 Magic number 4040404040404040 CPU 1 TRCCONFIGR 840 TRCTRACEIDR 12 TRCIDR0 28000ea1 TRCIDR1 4100f400 TRCIDR2 488 TRCIDR8 0 TRCAUTHSTATUS cc
I looked the code, but cannot narrow down the issue. But I think the error might be caused by wrongly handle meta data (in the function cs_etm_info_fill(), file tools/perf/arch/arm/util/cs-etm.c) or the error in auxtrace info handling (in function cs_etm__process_auxtrace_info(), file tools/perf/util/cs-etm.c).
Thanks, Leo Yan
bharat@bharat-OptiPlex-3070:~/trace$
=======
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c index 219c10eb752c..afbdba22eb2a 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c @@ -2076,6 +2076,17 @@ static u32 etmv4_cross_read(const struct device
*dev, u32 offset)
* accessing the ETMv4 trace core registers */
smp_call_function_single(drvdata->cpu, do_smp_cross_read, ®,
1);
- /*
* OcteonTx2 h/w reports ETMv4.2 but it supports Ignore Packet
* feature of ETMv4.3, Treat this h/w as ETMv4.3 compatible.
*/
- if ((offset == TRCIDR1) &&
(drvdata->etm_options & CORESIGHT_OPTS_TREAT_ETMv43)) {
reg.data &= ~0xF0;
reg.data |= 0x30;
- }
- return reg.data;
}
diff --git a/drivers/hwtracing/coresight/coresight-etm4x.c b/drivers/hwtracing/coresight/coresight-etm4x.c index 6296837ca00d..ada87018317b 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x.c +++ b/drivers/hwtracing/coresight/coresight-etm4x.c @@ -625,6 +625,16 @@ static void etm4_init_arch_data(void *info)
/* base architecture of trace unit */ etmidr1 = readl_relaxed(drvdata->base + TRCIDR1);
- /*
* OcteonTx2 h/w reports ETMv4.2 but it supports Ignore Packet
* feature of ETMv4.3, Treat this h/w as ETMv4.3 compatible.
*/
- if (drvdata->etm_options & CORESIGHT_OPTS_TREAT_ETMv43) {
etmidr1 &= ~0xF0;
etmidr1 |= 0x30;
- }
- /*
- TRCARCHMIN, bits[7:4] architecture the minor version number
- TRCARCHMAJ, bits[11:8] architecture major versin number @@
-1115,6 +1125,10 @@ static int etm4_probe(struct amba_device *adev,
const struct amba_id *id)
if (drvdata->cpu < 0) return drvdata->cpu;
- /* Enable options for Silicon issues */
- if (id->id == OCTEONTX_CN9XXX_ETM)
drvdata->etm_options = CORESIGHT_OPTS_TREAT_ETMv43;
- desc.name = devm_kasprintf(dev, GFP_KERNEL, "etm%d", drvdata-
cpu); if (!desc.name) return -ENOMEM; diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h index 4523f10ddd0f..b16f66be8606 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x.h +++ b/drivers/hwtracing/coresight/coresight-etm4x.h @@ -191,6 +191,12 @@ #define ETM_EXLEVEL_NS_HYP BIT(14) #define ETM_EXLEVEL_NS_NA BIT(15)
+/* Marvell OcteonTx CN9xxx ETM HW issues */ +#define CORESIGHT_OPTS_TREAT_ETMv43 (0x1U << 0) /* Treat ETMv4.2
as ETMv4.3 */
+/* Marvell OcteonTx CN9xxx ETM device */ +#define OCTEONTX_CN9XXX_ETM 0x000cc210
/**
- struct etmv4_config - configuration information related to an ETMv4
- @mode: Controls various modes supported by this ETM.
@@ -287,6 +293,7 @@ struct etmv4_config {
- @csdev: Component vitals needed by the framework.
- @spinlock: Only one at a time pls.
- @mode: This tracer's mode, i.e sysFS, Perf or disabled.
- @etm_options: Bitmask of options to manage ETMv4 Silicon issues
- @cpu: The cpu this component is affined to.
- @arch: ETM version number.
- @nr_pe: The number of processing entity available for tracing.
@@ -342,6 +349,7 @@ struct etmv4_drvdata { struct coresight_device *csdev; spinlock_t spinlock; local_t mode;
- u32 etm_options; int cpu; u8 arch; u8 nr_pe;
==============
Thanks -Bharat
-----Original Message----- From: Leo Yan leo.yan@linaro.org Sent: Tuesday, November 5, 2019 4:38 PM To: Bharat Bhushan bbhushan2@marvell.com Cc: Coresight ML coresight@lists.linaro.org Subject: [EXT] Re: perf: user-space trace decoding
External Email
-- Hi Bharat,
On Tue, Nov 05, 2019 at 08:30:25AM +0000, Bharat Bhushan wrote:
Hi All,
Linux h/w trace decoding is working as expected but user-space trace
decoding not showing sybmols (dump raw trace shows h/w trace info) of user-space application/libraries.
Here is how I am using:
- Kernel trace
=> perf record -C 1 -e cs_etm/@tmc_etr1/k taskset 0x2 uname
=> tar czf cs_example.tgz perf.data .debug
Transfer cs_example.tgz on x86 machine, untar, copy .debug in ~/ (home)
=> perf report --vmlinux=./vmlinux
# Samples: 937 of event 'branches:k'
# Event count (approx.): 937
#
# Children Self Command Shared Object Symbol
# ........ ........ ....... ................. ..............................................
#
15.58% 15.58% swapper [kernel.kallsyms] [k] __delay
8.54% 8.54% swapper [kernel.kallsyms] [k]
arch_counter_get_cntpct
3.31% 3.31% swapper [kernel.kallsyms] [k]
event_sched_in.isra.37
2.67% 2.67% swapper [kernel.kallsyms] [k] group_sched_in
2.56% 2.56% swapper [kernel.kallsyms] [k] do_idle
2.35% 2.35% swapper [kernel.kallsyms] [k]
perf_event_update_userpage
2.24% 2.24% swapper [kernel.kallsyms] [k]
clocks_calc_mult_shift
- User-space trace
=> perf record -C 1 -e cs_etm/@tmc_etr1/u taskset 0x2 uname
I verified this command on DB410c, it can record and report well.
=> tar czf cs_example.tgz perf.data .debug
Transfer cs_example.tgz on x86 machine, untar, copy .debug
in ~/
(home)
=> perf report
Error:
The perf.data data has no samples!
# To display the perf.data header info, please use
--header/--header-
only options.
#
But if dump raw trace then I can see ISYNC/ATOM packets
One potential reason is perf cannot find the correct DSO file. Could
you use below command to output more verbose log?
# perf --debug verbose=10 report --stdio > perf_report_dbg.log
Maybe can find more hints for this failure.
Thanks,
Leo Yan
=> perf report --dump
. ... CoreSight ETM Trace data: size 25960 bytes
Idx:24; ID:12; I_ASYNC : Alignment Synchronisation.
Idx:36; ID:12; I_TRACE_INFO : Trace Info.; INFO=0x0
Idx:39; ID:12; I_TRACE_ON : Trace On.
Idx:40; ID:12; I_CTXT : Context Packet.; Ctxt:
AArch64,EL2, NS;
CID=0x00000000;
Idx:46; ID:12; I_TRACE_ON : Trace On.
Idx:47; ID:12; I_CTXT : Context Packet.; Ctxt:
AArch64,EL0, NS;
CID=0x00000000;
Idx:53; ID:12; I_ADDR_L_64IS0 : Address, Long, 64 bit,
IS0.;
Addr=0x0000FFFF801CCF7C;
Idx:62; ID:12; I_ATOM_F1 : Atom format 1.; N
Idx:63; ID:12; I_TIMESTAMP : Timestamp.; Updated val =
0xede4824ce5
. . .
Any idea what I am missing.
Thanks
-Bharat
CoreSight mailing list
CoreSight@lists.linaro.org
3A__lists.linaro.org_mailman_listinfo_coresight&d=DwIBAg&c=nKjWec2b6
R0
mOyPaz7xtfQ&r=PAAlWswPe7d8gHlGbCLmy2YezyK7O3Hv_t2heGnouBw&m=
GZeDPhs62scs3v9Csh9IZRB6pw8UMJYewwhrv_U5xpc&s=ezH1P6fe2-
wWc8g-
N02AMoUehx2BriCCEbr9VPmuaDw&e=