Linux coresight arm64 : Incorrect data in cstrace.bin
Pandey, Radhey Shyam
radhey.shyam.pandey at amd.com
Wed Jul 5 04:48:24 PDT 2023
> -----Original Message-----
> From: James Clark <james.clark at arm.com>
> Sent: Wednesday, July 5, 2023 4:29 PM
> To: Pandey, Radhey Shyam <radhey.shyam.pandey at amd.com>
> Cc: coresight at lists.linaro.org; linux-arm-kernel at lists.infradead.org; Suzuki K
> Poulose <suzuki.poulose at arm.com>; mathieu.poirier at linaro.org;
> mike.leach at linaro.org; leo.yan at linaro.org;
> alexander.shishkin at linux.intel.com
> Subject: Re: Linux coresight arm64 : Incorrect data in cstrace.bin
>
>
>
> On 05/07/2023 10:56, Pandey, Radhey Shyam wrote:
> >> -----Original Message-----
> >> From: Suzuki K Poulose <suzuki.poulose at arm.com>
> >> Sent: Wednesday, July 5, 2023 1:57 PM
> >> To: Pandey, Radhey Shyam <radhey.shyam.pandey at amd.com>;
> >> mathieu.poirier at linaro.org; mike.leach at linaro.org;
> >> leo.yan at linaro.org; alexander.shishkin at linux.intel.com
> >> Cc: coresight at lists.linaro.org; linux-arm-kernel at lists.infradead.org
> >> Subject: Re: Linux coresight arm64 : Incorrect data in cstrace.bin
> >>
> >> Hi Radhe Shyam
> >>
> >> On 05/07/2023 05:38, Pandey, Radhey Shyam wrote:
> >>> Hi,
> >>>
> >>> I am using linux 6.1 kernel coresight framework to capture ETM trace.
> >>> Enabled coresight driver and added coresight component device node
> >>> in DTS. With that, we could probe all coresight components.
> >>>
> >>> But when we do capture using sysfs and then read the trace.bin using
> >>> ptm2human we see invalid trace data. Trace content changes on each
> >>> capture. Any pointers to help narrow down the issue?
> >>>
> >>> Tried: sysfs capture and perf (with OpenCSD enabled)
> >>>
> >>> Development board: VCK190 :
> >>> https://docs.xilinx.com/r/en-US/ug1366-vck190-eval-bd
> >>> https://www.xilinx.com/support/documents/architecture-
> >> manuals/am011-ve
> >>> rsal-acap-trm.pdf
> >>>
> >>> xilinx-vck190-20231:/home/petalinux# dmesg | grep -i amba
> >>> [ 0.301054] Serial: AMBA PL011 UART driver
> >>> [ 0.306226] amba f0c20000.funnel: Fixing up cyclic dependency with
> >> f0d70000.etm
> >>> [ 0.313624] amba f0c20000.funnel: Fixing up cyclic dependency with
> >> f0d30000.etm
> >>> [ 0.321110] amba f0c30000.etf: Fixing up cyclic dependency with
> >> f0c20000.funnel
> >>> [ 1.470247] Serial: AMBA driver
> >>> xilinx-vck190-20231:/home/petalinux# dmesg | grep -i coresight
> >>> [ 1.865006] cs_system_cfg: CoreSight Configuration manager initialised
> >>> [ 1.876858] coresight etm0: CPU0: etm v4.0 initialized
> >>> [ 1.885666] coresight etm1: CPU1: etm v4.0 initialized
> >>> [ 1.894435] coresight-cpu-debug f0d00000.debug1: Coresight debug-
> CPU0
> >> initialized
> >>> [ 1.902072] coresight-cpu-debug f0d40000.debug1: Coresight debug-
> CPU1
> >> initialized
> >>>
> >>> xilinx-vck190-20231:/home/petalinux# ls /sys/bus/coresight/devices/
> >>> etm0 etm1 funnel0 tmc_etf0
> >>>
> >>> cd /sys/bus/coresight/devices/
> >>> echo 1 > tmc_etf0/enable_sink
> >>> echo 1 > etm0/enable_source
> >>> echo 0 > etm0/enable_source
> >>> echo 0 > tmc_etf0/enable_sink
> >>> cd /root/ dd if=/dev/tmc_etf0 of=cstrace_28Jun.bin
> >>>
> >>> ./ptm2human/ptm2human -e -i cstrace.bin -d
> >>
> >> Please note that ptm2human is for PTM trace decoding and
> >> ETMv4 uses a different format and thus is not compatible.
> >>
> >>>
> >>> I also tried OpenCSD integration with PERF.
> >>
> >> Have you made sure the perf is "linked" to the opencsd ?
> >
> > Earlier I statically linked but after adding CORESIGHT=1.
> >
> >
> > linux-xlnx$ make ARCH=arm64 NO_LIBELF=1 NO_JVMTI=1 VF=1
> CORESIGHT=1 -C
> > tools/perf/
> > make: Entering directory 'linux-xlnx/tools/perf'
> > BUILD: Doing 'make -j24' parallel build
> >
> > Makefile.config:520: *** Error: No libopencsd library found or the version
> is not up-to-date.
> > Please install recent libopencsd to build with CORESIGHT=1. Stop.
> >
> >
> > echo $CSINCLUDES
> > /scratch/development/coresight/my-opencsd/decoder/include
> > radheys at xhdradheys41:/scratch/development/linux-xlnx$ ls
> > /scratch/development/coresight/my-opencsd/decoder/include
> > common i_dec interfaces mem_acc opencsd opencsd.h pkt_printers
> >
> > echo $CSLIBS
> > /scratch/development/coresight/my-opencsd/decoder/lib/builddir
> > radheys at xhdradheys41:/scratch/development/linux-xlnx$ ls
> /scratch/development/coresight/my-opencsd/decoder/lib/builddir
> > libopencsd.a libopencsd_c_api.so libopencsd_c_api.so.1.4.0
> libopencsd.so.1
> > libopencsd_c_api.a libopencsd_c_api.so.1 libopencsd.so
> libopencsd.so.1.4.0
> >
> > Anything I am missing to fix this opencsd lib not found?
>
> There is a minimum version of 1.1.1 but it looks like you are using higher
> than that so that part should be fine.
>
> Personally I "make install" OpenCSD to the system path. I had a play around
> with $CSLIBS it and maybe there is also some stickyness to the feature
> detection so a make clean might help to make sure the errors you are seeing
> are real.
>
> Lastly you can print the output of why the feature test compilation failed
> which might help. I see some linking issues in there if I delete my system
> installed version of OpenCSD, so there might be a bug with just using
> CSINCLUDES and CSLIBS:
>
> $ cat tools/build/feature/test-libopencsd.make.output
>
> /usr/bin/ld: warning: libopencsd.so.1, needed by opencsd-
> local/decoder/lib/builddir//libopencsd_c_api.so, not found (try using -rpath
> or -rpath-link)
> /usr/bin/ld: opencsd-local/decoder/lib/builddir//libopencsd_c_api.so:
> undefined reference to `vtable for StmTrcPacket'
> /usr/bin/ld: opencsd-local/decoder/lib/builddir//libopencsd_c_api.so:
> undefined reference to `DecodeTree::getDecoderStats(unsigned char,
> _ocsd_decode_stats**)'
> /usr/bin/ld: opencsd-local/decoder/lib/builddir//libopencsd_c_api.so:
> undefined reference to
> `DecodeTree::addRawFramePrinter(RawFramePrinter**, unsigned int)'
>
> Can you try the make install and see if that works? If that works but the other
> way doesn't I can try looking into why its not and make a fix.
I tried make install but still it errors out. Looking at make.output
I am seeing multiple undefined references.
NOTE I have to still set CSINCLUDES and CSLIBS as we are cross-compiling
Perf on a x86 host machine.
cat tools/build/feature/test-libopencsd.make.output <snip library paths>
aarch64-xilinx-linux-ld.real: warning: libopencsd.so.1, needed by libopencsd_c_api.so, not found (try using -rpath or -rpath-link)
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `vtable for StmTrcPacket'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::getDecoderStats(unsigned char, _ocsd_decode_stats**)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::addRawFramePrinter(RawFramePrinter**, unsigned int)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::logMappedRanges()'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `OcsdLibDcdRegister::deregisterAllDecoders()'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `PtmTrcPacket::toString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::s_error_logger'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::addBinFileRegionMemAcc(_ocsd_file_mem_region const*, int, _ocsd_mem_space_acc_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `EtmV4ITrcPacket::~EtmV4ITrcPacket()'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `OcsdLibDcdRegister::getDecoderRegister()'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `typeinfo for TraceComponent'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `EtmV3TrcPacket::~EtmV3TrcPacket()'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `OcsdTraceElement::toString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::addGenElemPrinter(TrcGenericElementPrinter**)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::DestroyDecodeTree(DecodeTree*)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `ocsdError::getErrorString[abi:cxx11](ocsdError const&)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::setGenTraceElemOutI(ITrcGenElemIn*)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `ocsdError::ocsdError(ocsdError const*)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `ocsdError::ocsdError(_ocsd_err_severity_t, _ocsd_err_t, unsigned int, unsigned char, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `EtmV4ITrcPacket::toString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `DecodeTree::createDecoder(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, CSConfig const*)'
aarch64-xilinx-linux-ld.real: libopencsd_c_api.so: undefined reference to `StmTrcPacket::StmTrcPacket()'
Thanks,
Radhey
>
> Thanks
> James
More information about the linux-arm-kernel
mailing list