Hi Mathieu, On Mon, 16 Dec 2019 at 21:22, Mathieu Poirier <mathieu.poirier@xxxxxxxxxx> wrote: > > On Wed, 11 Dec 2019 at 16:07, Mike Leach <mike.leach@xxxxxxxxxx> wrote: > > > > CTIs are defined in the device tree and associated with other CoreSight > > devices. The core CoreSight code has been modified to enable the registration > > of the CTI devices on the same bus as the other CoreSight components, > > but as these are not actually trace generation / capture devices, they > > are not part of the Coresight path when generating trace. > > > > However, the definition of the standard CoreSight device has been extended > > to include a reference to an associated CTI device, and the enable / disable > > trace path operations will auto enable/disable any associated CTI devices at > > the same time. > > > > Programming is at present via sysfs - a full API is provided to utilise the > > hardware capabilities. As CTI devices are unprogrammed by default, the auto > > enable describe above will have no effect until explicit programming takes > > place. > > > > A set of device tree bindings specific to the CTI topology has been defined. > > The driver accesses these in a platform agnostic manner, so ACPI bindings > > can be added later, once they have been agreed and defined for the CTI device. > > > > Documentation has been updated to describe both the CTI hardware, its use and > > programming in sysfs, and the new dts bindings required. > > > > Tested on DB410 board and Juno board, against the Linux 5.5-rc1 tree. > > > > Changes since v5: > > 1) Fixed up device tree .yaml file. Using extra compatible string for > > v8 architecture CTI connections. > > 2) Ensure association code respects coresight mutex when setting cross > > referenced pointers. Add in shutdown code. > > 3) Multiple minor code fixes & rationalisation. > > > > Changes since v4: > > Multiple changes following feedback from Mathieu, Leo and Suzuki. > > 1) Dropped RFC tag - wider distribution > > 2) CTI bindings definition now presented as a .yaml file - tested with > > with 'dt-doc-validate' from devicetree.org/dt-schema project and in kernel > > build tree with 'make dtbs_check' per kernel docs. > > 3) Sysfs links to other CoreSight devices moved out of this set into > > a following set that deals with all CoreSight devices & sysfs links. > > 4) Documentation in .rst format and new directory following patchset in [1]. > > Extended example provided in docs. > > 5) Rationalised devicetree of_ specifics to use generic fwnode functions > > where possible to enable easier addition of ACPI support later. > > 6) Other minor changes as requested in feedback from last patchset. > > > > Changes since v3: > > 1) After discussion on CS mailing list, each CTI connection has a triggers<N> > > sysfs directory with name and trigger signals listed for the connection. > > 2) Initial code for creating sysfs links between CoreSight components is > > introduced and implementation for CTI provided. This allows exploration > > of the CoreSight topology within the sysfs infrastructure. Patches for > > links between other CoreSight components to follow. > > 3) Power management - CPU hotplug and idle omitted from this set as ongoing > > developments may define required direction. Additional patch set to follow. > > 4) Multiple fixes applied as requested by reviewers esp. Matthieu, Suzuki > > and Leo. > > > > Changes since v2: > > Updates to allow for new features on coresight/next and feedback from > > Mathieu and Leo. > > > > 1) Rebase and restructuring to apply on top of ACPI support patch set, > > currently on coresight/next. of_coresight_cti has been renamed to > > coresight-cti-platform and device tree bindings added to this but accessed > > in a platform agnostic manner using fwnode for later ACPI support > > to be added. > > 2) Split the sysfs patch info a series of functional patches. > > 3) Revised the refcount and enabling support. > > 4) Adopted the generic naming protocol - CTIs are either cti_cpuN or > > cti_sysM > > 5) Various minor presentation /checkpatch issues highlighted in feedback. > > 6) revised CPU hotplug to cover missing cases needed by ETM. > > > > Changes since v1: > > 1) Significant restructuring of the source code. Adds cti-sysfs file and > > cti device tree file. Patches add per feature rather than per source > > file. > > 2) CPU type power event handling for hotplug moved to CoreSight core, > > with generic registration interface provided for all CPU bound CS devices > > to use. > > 3) CTI signal interconnection details in sysfs now generated dynamically > > from connection lists in driver. This to fix issue with multi-line sysfs > > output in previous version. > > 4) Full device tree bindings for DB410 and Juno provided (to the extent > > that CTI information is available). > > 5) AMBA driver update for UCI IDs are now upstream so no longer included > > in this set. > > > > Mike Leach (15): > > coresight: cti: Initial CoreSight CTI Driver > > coresight: cti: Add sysfs coresight mgmt reg access. > > coresight: cti: Add sysfs access to program function regs > > coresight: cti: Add sysfs trigger / channel programming API > > dt-bindings: arm: Adds CoreSight CTI hardware definitions. > > coresight: cti: Add device tree support for v8 arch CTI > > coresight: cti: Add device tree support for custom CTI. > > coresight: cti: Enable CTI associated with devices. > > coresight: cti: Add connection information to sysfs > > dt-bindings: qcom: Add CTI options for qcom msm8916 > > dt-bindings: arm: Juno platform - add CTI entries to device tree. > > dt-bindings: hisilicon: Add CTI bindings for hi-6220 > > docs: coresight: Update documentation for CoreSight to cover CTI. > > docs: sysfs: coresight: Add sysfs ABI documentation for CTI > > Update MAINTAINERS to add reviewer for CoreSight. > > > > All that needs to be sorted out in this set are the comments made by > Maxime. When you do address those please only resend that patch. > Since Maxime's comments are related to yaml syntax rather than the > bindings themselves, I have added your set to my next tree so that it > can soak in linux-next over the next few weeks. > As a result of the changes requested by Maxime - there are necessary changes to the .dts for the juno bindings as well as the .yaml file - juno bindings need to respect the requirement for reg = <> entries in the trig-conns@ child nodes. These changes are still limited to devicetree so I will post just these two patches next time. Regards Mike > Thanks, > Mathieu > > > .../testing/sysfs-bus-coresight-devices-cti | 221 ++++ > > .../bindings/arm/coresight-cti.yaml | 303 +++++ > > .../devicetree/bindings/arm/coresight.txt | 7 + > > .../trace/coresight/coresight-ect.rst | 211 +++ > > Documentation/trace/coresight/coresight.rst | 13 + > > MAINTAINERS | 3 + > > arch/arm64/boot/dts/arm/juno-base.dtsi | 149 ++- > > arch/arm64/boot/dts/arm/juno-cs-r1r2.dtsi | 31 +- > > arch/arm64/boot/dts/arm/juno-r1.dts | 25 + > > arch/arm64/boot/dts/arm/juno-r2.dts | 25 + > > arch/arm64/boot/dts/arm/juno.dts | 25 + > > .../boot/dts/hisilicon/hi6220-coresight.dtsi | 130 +- > > arch/arm64/boot/dts/qcom/msm8916.dtsi | 85 +- > > drivers/hwtracing/coresight/Kconfig | 21 + > > drivers/hwtracing/coresight/Makefile | 3 + > > .../coresight/coresight-cti-platform.c | 485 +++++++ > > .../hwtracing/coresight/coresight-cti-sysfs.c | 1175 +++++++++++++++++ > > drivers/hwtracing/coresight/coresight-cti.c | 748 +++++++++++ > > drivers/hwtracing/coresight/coresight-cti.h | 235 ++++ > > .../hwtracing/coresight/coresight-platform.c | 21 + > > drivers/hwtracing/coresight/coresight-priv.h | 15 + > > drivers/hwtracing/coresight/coresight.c | 86 +- > > include/dt-bindings/arm/coresight-cti-dt.h | 37 + > > include/linux/coresight.h | 27 + > > 24 files changed, 4050 insertions(+), 31 deletions(-) > > create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-cti > > create mode 100644 Documentation/devicetree/bindings/arm/coresight-cti.yaml > > create mode 100644 Documentation/trace/coresight/coresight-ect.rst > > create mode 100644 drivers/hwtracing/coresight/coresight-cti-platform.c > > create mode 100644 drivers/hwtracing/coresight/coresight-cti-sysfs.c > > create mode 100644 drivers/hwtracing/coresight/coresight-cti.c > > create mode 100644 drivers/hwtracing/coresight/coresight-cti.h > > create mode 100644 include/dt-bindings/arm/coresight-cti-dt.h > > > > -- > > 2.17.1 > > -- Mike Leach Principal Engineer, ARM Ltd. Manchester Design Centre. UK