Re: [PATCH v2 00/14] coresight: Implement device claim protocol

From: Mathieu Poirier
Date: Wed Sep 12 2018 - 15:42:54 EST


On Thu, 6 Sep 2018 at 03:08, Suzuki K Poulose <suzuki.poulose@xxxxxxx> wrote:
>
> Coresight architecture defines CLAIM tags for a device to negotiate
> control of the components (external agent vs self-hosted). Each device
> has a pair of registers (CLAIMSET & CLAIMCLR) for managing the CLAIM
> tags. However, the protocol for the CLAIM tags is IMPLEMENTATION DEFINED.
> PSCI has recommendations for the use of the CLAIM tags to negotiate
> controls for external agent vs self-hosted use, as defined in
> ARM DEN 0022D, Section "6.8.1 Debug and Trace save and restore".
>
> This series implements the recommended protocol by PSCI.
>
> There were two options for the implementation.
> 1) Have the claim/disclaim operations performed from the coresight
> generic driver - This doesn't work unfortunately for ETM devices
> as the need cross-CPU calls to access the CLAIM registers. Also,
> makes it complex for error recovery and reference counting.
>
> 2) Have the claim/disclaim operations performed from the device
> specific drivers. The disadvantage is that the calls are sprinkled
> in each driver, but this makes the operation much simpler.
>
> This series implements the method (2). The first part of the series
> prepares different drivers to handle errors from the lower layer
> and clean up the state. The second part of the series updates the
> existing drivers to claim/disclaim the devices as necessary.
>
> Tested with a hacked coresight driver which modifies the external
> claim tag via sysfs handle.
>
> Applies on coresight/next in Mathieu's tree.
>
> Changes since V1:
> - Handle errors is enabling path and disable only the components
> that were enabled in the iteration.
> - Fix build break on arm32 (etm3x)
> - Update commit description for "coresight: Add support for CLAIM tag protocol"
>
> Suzuki K Poulose (14):
> coresight: Handle failures in enabling a trace path
> coresight: tmc-etr: Refactor for handling errors
> coresight: tmc-etr: Handle errors enabling CATU
> coresight: tmc-etb/etf: Prepare to handle errors enabling
> coresight: etm4x: Add support for handling errors
> coresight: etm3: Add support for handling errors
> coresight: etb10: Handle errors enabling the device
> coresight: dynamic-replicator: Handle multiple connections
> coresight: Add support for CLAIM tag protocol
> coresight: etmx: Claim devices before use
> coresight: funnel: Claim devices before use
> coresight: catu: Claim device before use
> coresight: dynamic-replicator: Claim device for use
> coreisght: tmc: Claim device before use
>
> drivers/hwtracing/coresight/coresight-catu.c | 6 ++
> .../coresight/coresight-dynamic-replicator.c | 79 ++++++++++----
> drivers/hwtracing/coresight/coresight-etb10.c | 18 +++-
> drivers/hwtracing/coresight/coresight-etm3x.c | 56 +++++++---
> drivers/hwtracing/coresight/coresight-etm4x.c | 51 ++++++---
> drivers/hwtracing/coresight/coresight-funnel.c | 26 ++++-
> drivers/hwtracing/coresight/coresight-priv.h | 7 ++
> drivers/hwtracing/coresight/coresight-tmc-etf.c | 95 +++++++++++------
> drivers/hwtracing/coresight/coresight-tmc-etr.c | 80 +++++++++-----
> drivers/hwtracing/coresight/coresight.c | 118 +++++++++++++++++++--
> include/linux/coresight.h | 20 ++++
> 11 files changed, 434 insertions(+), 122 deletions(-)

I have applied this set.

Thanks,
Mathieu

>
> --
> 2.7.4
>