Hi Greg,
Thanks for your review.
On 3/24/2022 8:26 PM, Greg Kroah-Hartman wrote:
> On Thu, Mar 24, 2022 at 08:17:25PM +0800, Mao Jinlong wrote:
>> Use hash length of the source's device name to map to the pointer
>> of the enabled path. Using IDR will be more efficient than using
>> the list. And there could be other sources except STM and CPU etms
>> in the new HWs. It is better to maintain all the paths together.
>>
>> Signed-off-by: Mao Jinlong <quic_jinlmao(a)quicinc.com>
>> ---
>> drivers/hwtracing/coresight/coresight-core.c | 75 +++++++-------------
>> 1 file changed, 26 insertions(+), 49 deletions(-)
> Your subject line is odd. Please put back the driver subsystem in the
> subject line so that it makes more sense.
I will update the subject in next version.
>
> And how have you measured "more efficient"?
Using IDR would be better than doing a sequential search as there will
be much more device in future.
>
> thanks,
>
> greg k-h
Thanks
Jinlong Mao
Hi Greg,
On 3/25/2022 1:06 AM, Greg Kroah-Hartman wrote:
> On Thu, Mar 24, 2022 at 10:23:19PM +0800, Jinlong Mao wrote:
>> Hi Greg,
>>
>> Thanks for your review.
>>
>> On 3/24/2022 8:26 PM, Greg Kroah-Hartman wrote:
>>> On Thu, Mar 24, 2022 at 08:17:25PM +0800, Mao Jinlong wrote:
>>>> Use hash length of the source's device name to map to the pointer
>>>> of the enabled path. Using IDR will be more efficient than using
>>>> the list. And there could be other sources except STM and CPU etms
>>>> in the new HWs. It is better to maintain all the paths together.
>>>>
>>>> Signed-off-by: Mao Jinlong <quic_jinlmao(a)quicinc.com>
>>>> ---
>>>> drivers/hwtracing/coresight/coresight-core.c | 75 +++++++-------------
>>>> 1 file changed, 26 insertions(+), 49 deletions(-)
>>> Your subject line is odd. Please put back the driver subsystem in the
>>> subject line so that it makes more sense.
>> I will update the subject in next version.
>>> And how have you measured "more efficient"?
>> Using IDR would be better than doing a sequential search as there will be
>> much more device in future.
> How many "more"? Where does the trade off of speed for complexity help?
> How much faster is this really? You can't claim performance
> improvements without any proof :)
There is about 40 trace sources in our internal device. I believe there
will be more cpu cores, then
there will be more etm sources. IDR here is used to store the path of
both etm
sources and other sources which aren't associated with CPU. Use IDR is
not more complicated
than using list. It will also save the time of searching the path when
coresight_disable.
I tested in internal device. The test case is that enable all the
sources, disable the source one
by one to check the search time.
Use list to store paths:
sh-7687 [005] .... 342.113099: __coresight_disable:
====search path start==== source_0
sh-7687 [005] .... 342.113127: __coresight_disable:
====search path end==== source_0
sh-7693 [005] .... 342.542216: __coresight_disable:
====search path start==== source_1
sh-7693 [005] .... 342.542244: __coresight_disable:
====search path end==== source_1
sh-7699 [005] .... 342.929083: __coresight_disable:
====search path start==== source_2
sh-7699 [005] .... 342.929106: __coresight_disable:
====search path end==== source_2
sh-7711 [005] .... 343.760688: __coresight_disable:
====search path start==== source_3
sh-7711 [005] .... 343.760713: __coresight_disable:
====search path end==== source_3
sh-7717 [005] .... 344.172353: __coresight_disable:
====search path start==== source_4
sh-7717 [005] .... 344.172381: __coresight_disable:
====search path end==== source_4
Use IDR to store paths:
sh-7156 [006] .... 223.294228: __coresight_disable:
====search path start==== source_0
sh-7156 [006] .... 223.294237: __coresight_disable:
====search path end==== source_0
sh-7162 [006] .... 223.690153: __coresight_disable:
====search path start==== source_1
sh-7162 [006] .... 223.690163: __coresight_disable:
====search path end==== source_1
sh-7168 [006] .... 224.110670: __coresight_disable:
====search path start==== source_2
sh-7168 [006] .... 224.110679: __coresight_disable:
====search path end==== source_2
<...>-7180 [006] .... 224.929315: __coresight_disable:
====search path start==== source_3
<...>-7180 [006] .... 224.929324: __coresight_disable:
====search path end==== source_3
<...>-7186 [006] .... 225.343617: __coresight_disable:
====search path start==== source_4
<...>-7186 [006] .... 225.343626: __coresight_disable:
====search path end==== source_4
From the log, Searching the path from the IDR takes about 9us for each
source.
Searching the path from the list takes about 23 ~ 28us for the source.
Use IDR saves much time.
Thanks
Jinlong Mao
>
> thanks,
>
> greg k-h
Hi All,
Couple of questions:
1. Does anyone know of any other software options other than DS-5 for configuring, capturing and viewing data using the ELA-600 ?
2. I could roll my own but I don't think OpenCSD has support for the ELA-600. Correct ?
Thanks in advance
Hugh
-----Original Message-----
From: coresight-request(a)lists.linaro.org <coresight-request(a)lists.linaro.org>
Sent: Thursday 24 March 2022 17:36
To: Hugh O'Keeffe <hugh.okeeffe(a)ashling.com>
Subject: Welcome to the "CoreSight" mailing list
Welcome to the "CoreSight" mailing list!
To post to this list, send your message to:
coresight(a)lists.linaro.org
You can unsubscribe or make adjustments to your options via email by sending a message to:
coresight-request(a)lists.linaro.org
with the word 'help' in the subject or body (don't include the quotes), and you will get back a message with instructions. You will need your password to change your options, but for security purposes, this password is not included here. If you have forgotten your password you will need to reset it via the web UI.
On 3/24/2022 8:26 PM, Greg Kroah-Hartman wrote:
> On Thu, Mar 24, 2022 at 08:17:30PM +0800, Mao Jinlong wrote:
>> Add API usage document for sysfs API in TPDM driver.
>>
>> Signed-off-by: Mao Jinlong <quic_jinlmao(a)quicinc.com>
>> ---
>> Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm | 5 +++++
>> 1 file changed, 5 insertions(+)
>> create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm
>>
>> diff --git a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm
>> new file mode 100644
>> index 000000000000..1df2f9b9ade2
>> --- /dev/null
>> +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm
>> @@ -0,0 +1,5 @@
>> +What: /sys/bus/coresight/devices/<tpdm-name>/integration_test
>> +Date: February 2022
> It is no longer February.
>
>> +KernelVersion 5.17
> 5.17 is long past.
>
>> +Contact: Jinlong Mao or Tao Zhang
> How do we contact these names?
>
>> +Description: (Write) Run integration test for tpdm.
> I do not understand this description at all. Please explain it much
> better.
>
> thanks,
>
> greg k-h
Thanks for the review. I will address your comments in next version.
Thanks
Jinlong Mao
This series adds support for the trace performance monitoring and
diagnostics hardware (TPDM and TPDA). It is composed of two major
elements.
a) Changes for original coresight framework to support for TPDM and TPDA.
b) Add driver code for TPDM and TPDA.
Introduction of changes for original coresight framework
Support TPDM as new coresight source.
Since only STM and ETM are supported as coresight source originally.
TPDM is a newly added coresight source. We need to change
the original way of saving coresight path to support more types source
for coresight driver.
The following patch is to add support more coresight sources.
Use IDR to maintain all the enabled sources' paths.
Introduction of TPDM and TPDA
TPDM - The trace performance monitoring and diagnostics monitor or TPDM in
short serves as data collection component for various dataset types
specified in the QPMDA(Qualcomm performance monitoring and diagnostics
architecture) spec. The primary use case of the TPDM is to collect data
from different data sources and send it to a TPDA for packetization,
timestamping and funneling.
Coresight: Add coresight TPDM source driver
dt-bindings: arm: Adds CoreSight TPDM hardware definitions
coresight-tpdm: Add DSB dataset support
coresight-tpdm: Add integration test support
docs: sysfs: coresight: Add sysfs ABI documentation for TPDM
TPDA - The trace performance monitoring and diagnostics aggregator or
TPDA in short serves as an arbitration and packetization engine for the
performance monitoring and diagnostics network as specified in the QPMDA
(Qualcomm performance monitoring and diagnostics architecture)
specification. The primary use case of the TPDA is to provide
packetization, funneling and timestamping of Monitor data as specified
in the QPMDA specification.
The following patch is to add driver for TPDA.
Coresight: Add TPDA link driver
dt-bindings: arm: Adds CoreSight TPDA hardware definitions
The last patch of this series is a device tree modification, which add
the TPDM and TPDA configuration to device tree for validating.
ARM: dts: msm: Add coresight components for SM8250
ARM: dts: msm: Add tpdm mm/prng for sm8250
Once this series patches are applied properly, the tpdm and tpda nodes
should be observed at the coresight path /sys/bus/coresight/devices
e.g.
/sys/bus/coresight/devices # ls -l | grep tpd
tpda0 -> ../../../devices/platform/soc(a)0/6004000.tpda/tpda0
tpdm0 -> ../../../devices/platform/soc(a)0/6c08000.mm.tpdm/tpdm0
We can use the commands are similar to the below to validate TPDMs.
Enable coresight sink first.
echo 1 > /sys/bus/coresight/devices/tmc_etf0/enable_sink
echo 1 > /sys/bus/coresight/devices/tpdm0/enable_source
echo 1 > /sys/bus/coresight/devices/tpdm0/integration_test
echo 2 > /sys/bus/coresight/devices/tpdm0/integration_test
The test data will be collected in the coresight sink which is enabled.
If rwp register of the sink is keeping updating when do
integration_test (by cat tmc_etf0/mgmt/rwp), it means there is data
generated from TPDM to sink.
There must be a tpda between tpdm and the sink. When there are some
other trace event hw components in the same HW block with tpdm, tpdm
and these hw components will connect to the coresight funnel. When
there is only tpdm trace hw in the HW block, tpdm will connect to
tpda directly.
+---------------+ +-------------+
| tpdm@6c08000 | |tpdm@684C000 |
+-------|-------+ +------|------+
| |
+-------|-------+ |
| funnel@6c0b000| |
+-------|-------+ |
| |
+-------|-------+ |
|funnel@6c2d000 | |
+-------|-------+ |
| |
| +---------------+ |
+----- tpda@6004000 -----------+
+-------|-------+
|
+-------|-------+
|funnel@6005000 |
+---------------+
This patch series depends on patch series
"coresight: Add new API to allocate trace source ID values".
https://patchwork.kernel.org/project/linux-arm-kernel/cover/20220308205000.…
Changes from V3:
1. Drop trace id for tpdm source as its trace atid is defined by the tpda.
Allocate tpda's atid dynamically. (Mike Leach)
Mao Jinlong (10):
Use IDR to maintain all the enabled sources' paths.
Coresight: Add coresight TPDM source driver
dt-bindings: arm: Adds CoreSight TPDM hardware definitions
coresight-tpdm: Add DSB dataset support
coresight-tpdm: Add integration test support
docs: sysfs: coresight: Add sysfs ABI documentation for TPDM
Coresight: Add TPDA link driver
dt-bindings: arm: Adds CoreSight TPDA hardware definitions
ARM: dts: msm: Add coresight components for SM8250
ARM: dts: msm: Add tpdm mm/prng for sm8250
.../testing/sysfs-bus-coresight-devices-tpdm | 5 +
.../bindings/arm/coresight-tpda.yaml | 119 +++
.../bindings/arm/coresight-tpdm.yaml | 99 +++
.../devicetree/bindings/arm/coresight.txt | 7 +
MAINTAINERS | 1 +
.../arm64/boot/dts/qcom/sm8250-coresight.dtsi | 708 ++++++++++++++++++
arch/arm64/boot/dts/qcom/sm8250.dtsi | 2 +
drivers/hwtracing/coresight/Kconfig | 33 +
drivers/hwtracing/coresight/Makefile | 2 +
drivers/hwtracing/coresight/coresight-core.c | 79 +-
drivers/hwtracing/coresight/coresight-tpda.c | 192 +++++
drivers/hwtracing/coresight/coresight-tpda.h | 32 +
drivers/hwtracing/coresight/coresight-tpdm.c | 260 +++++++
drivers/hwtracing/coresight/coresight-tpdm.h | 56 ++
include/linux/coresight.h | 1 +
15 files changed, 1546 insertions(+), 50 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm
create mode 100644 Documentation/devicetree/bindings/arm/coresight-tpda.yaml
create mode 100644 Documentation/devicetree/bindings/arm/coresight-tpdm.yaml
create mode 100644 arch/arm64/boot/dts/qcom/sm8250-coresight.dtsi
create mode 100644 drivers/hwtracing/coresight/coresight-tpda.c
create mode 100644 drivers/hwtracing/coresight/coresight-tpda.h
create mode 100644 drivers/hwtracing/coresight/coresight-tpdm.c
create mode 100644 drivers/hwtracing/coresight/coresight-tpdm.h
--
2.17.1
Em Sat, Mar 05, 2022 at 09:33:59PM +0100, Jiri Olsa escreveu:
> On Fri, Mar 04, 2022 at 09:09:55AM +0000, James Clark wrote:
> > Changes since v1:
> > * Add read lock around dso find
> > * Bracket style fix
> >
> > Hi,
> >
> > We are seeing an issue with doing Coresight decode off target where
> > initially the correct dso from ~/.debug is used, but after a new thread
> > in the perf.data file is passed with its mmap record, the local version
> > of the dso is picked up instead. This happens if the binary exists in the
> > same path on both devices, for example /bin/ls.
> >
> > Initially when parsing the build-ids in the header, the dso for /bin/ls
> > will be created, and the file will correctly point to
> > ~/.debug/bin/ls/2f15ad836be3339dec0e2e6a3c637e08e48aacbd/elf, but for any
> > new threads or mmaps that are also for /bin/ls, they will not have a
> > build-id set so they point to /bin/ls on the local machine rather than the
> > debug folder.
> >
> > To fix this I made it possible to look up which existing dsos have
> > build id's set that originate from the header and then copy that build-id
> > onto the new dso if the name matches. Another way to do it would
> > be to stop comparing the mmap id so it matches on filename only, but I
> > think we do want to differentiate between different mmaps, even if they
> > have the same name, which is how it works in this version.
> >
> > Applies to perf/core 56dce8681
> >
> > James Clark (1):
> > perf: Set build-id using build-id header on new mmap records
>
> Acked-by: Jiri Olsa <jolsa(a)kernel.org>
Thanks, applied.
- Arnaldo
From: Carsten Haitzler <carsten.haitzler(a)arm.com>
Perf test's shell runner will just run everything in the tests
directory (as long as it's not another directory or does not begin
with a dot), but sometimes you find files in there that are not shell
scripts - perf.data output for example if you do some testing and then
the next time you run perf test it tries to run these. Check the files
are executable so they are actually intended to be test scripts and
not just some "random junk" files there.
Signed-off-by: Carsten Haitzler <carsten.haitzler(a)arm.com>
---
tools/perf/tests/builtin-test.c | 4 +++-
tools/perf/util/path.c | 12 ++++++++++++
tools/perf/util/path.h | 1 +
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index 8cb5a1c3489e..ece272b55587 100644
--- a/tools/perf/tests/builtin-test.c
+++ b/tools/perf/tests/builtin-test.c
@@ -295,7 +295,9 @@ static const char *shell_test__description(char *description, size_t size,
#define for_each_shell_test(entlist, nr, base, ent) \
for (int __i = 0; __i < nr && (ent = entlist[__i]); __i++) \
- if (!is_directory(base, ent) && ent->d_name[0] != '.')
+ if (!is_directory(base, ent) && \
+ is_executable_file(base, ent) && \
+ ent->d_name[0] != '.')
static const char *shell_tests__dir(char *path, size_t size)
{
diff --git a/tools/perf/util/path.c b/tools/perf/util/path.c
index caed0336429f..7dde8c230ae8 100644
--- a/tools/perf/util/path.c
+++ b/tools/perf/util/path.c
@@ -92,3 +92,15 @@ bool is_directory(const char *base_path, const struct dirent *dent)
return S_ISDIR(st.st_mode);
}
+
+bool is_executable_file(const char *base_path, const struct dirent *dent)
+{
+ char path[PATH_MAX];
+ struct stat st;
+
+ sprintf(path, "%s/%s", base_path, dent->d_name);
+ if (stat(path, &st))
+ return false;
+
+ return !S_ISDIR(st.st_mode) && (st.st_mode & S_IXUSR);
+}
diff --git a/tools/perf/util/path.h b/tools/perf/util/path.h
index 083429b7efa3..d94902c22222 100644
--- a/tools/perf/util/path.h
+++ b/tools/perf/util/path.h
@@ -12,5 +12,6 @@ int path__join3(char *bf, size_t size, const char *path1, const char *path2, con
bool is_regular_file(const char *file);
bool is_directory(const char *base_path, const struct dirent *dent);
+bool is_executable_file(const char *base_path, const struct dirent *dent);
#endif /* _PERF_PATH_H */
--
2.32.0
Version 1.3.0 of OpenCSD is now released.
This updates the decoder for changes made to trace to account for new
features in Architecture versions Armv8-A v8.8 and Armv9-A v9.3
See README.md for addtional details.
Regards
Mike
--
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK