[PATCH 00/19] coresight: Support for ETMv4.4 system instructions
Suzuki K Poulose
suzuki.poulose at arm.com
Fri Sep 11 04:41:00 EDT 2020
CoreSight ETMv4.4 introduced system instructions for accessing
the ETM. This also implies that they may not be on the amba bus.
Right now all the CoreSight components are accessed via memory
map. Also, we have some common routines in coresight generic
code driver (e.g, CS_LOCK, claim/disclaim), which assume the
mmio. In order to preserve the generic algorithms at a single
place and to allow dynamic switch for ETMs, this series introduces
an abstraction layer for accessing a coresight device. It is
designed such that the mmio access are fast tracked (i.e, without
an indirect function call).
This will also help us to get rid of the driver+attribute specific
sysfs show/store routines and replace them with a single routine
to access a given register offset (which can be embedded in the
dev_ext_attribute). This is not currently implemented in the series,
but can be achieved.
Further we switch the generic routines to work with the abstraction.
With this in place, we refactor the etm4x code a bit to allow for
supporting the system instructions with very little new code. The
changes also switch to using the system instructions by default
even when we may have an MMIO.
We use TRCDEVARCH for the detection of the ETM component, which
is a standard register as per CoreSight architecture, rather than
the etm specific id register TRCIDR3. This is for making sure
that we are able to detect the ETM via system instructions accurately,
when the the trace unit could be anything (etm or a custom trace unit).
The series has been mildly tested on a model. I would really
appreciate any testing on real hardware.
Applies on coresight/next
Changes since V1:
- Flip the switch for iomem from no_iomem to io_mem in csdev_access.
- Split patches for claim/disclaim and CS_LOCK/UNLOCK conversions.
- Move device access initialisation for etm4x to the target CPU
- Cleanup secure exception level mask handling.
- Switch to use TRCDEVARCH for ETM component discovery. This
is for making
- Check the availability of OS/Software Locks before using them.
Suzuki K Poulose (19):
coresight: Introduce device access abstraction
coresight: tpiu: Prepare for using coresight device access abstraction
coresight: Convert coresight_timeout to use access abstraction
coresight: Convert claim/disclaim operations to use access wrappers
coresight: Use device access layer for Software lock/unlock operations
coresight: etm4x: Always read the registers on the host CPU
coresight: etm4x: Convert all register accesses
coresight: etm4x: Add commentary on the registers
coresight: etm4x: Add sysreg access helpers
coresight: etm4x: Define DEVARCH register fields
coresight: etm4x: Check for OS and Software Lock
coresight: etm4x: Cleanup secure exception level masks
coresight: etm4x: Clean up exception level masks
coresight: etm4x: Detect access early on the target CPU
coresight: etm4x: Use TRCDEVARCH for component discovery
coresight: etm4x: Detect system instructions support
coresight: etm4x: Refactor probing routine
coresight: etm4x: Add support for sysreg only devices
dts: bindings: coresight: ETMv4.4 system register access only units
.../devicetree/bindings/arm/coresight.txt | 6 +-
drivers/hwtracing/coresight/coresight-catu.c | 24 +-
.../hwtracing/coresight/coresight-cpu-debug.c | 22 +-
.../hwtracing/coresight/coresight-cti-sysfs.c | 5 +-
drivers/hwtracing/coresight/coresight-cti.c | 34 +-
drivers/hwtracing/coresight/coresight-etb10.c | 29 +-
.../coresight/coresight-etm3x-sysfs.c | 10 +-
drivers/hwtracing/coresight/coresight-etm3x.c | 35 +-
.../coresight/coresight-etm4x-sysfs.c | 44 +-
drivers/hwtracing/coresight/coresight-etm4x.c | 716 +++++++++++-------
drivers/hwtracing/coresight/coresight-etm4x.h | 440 ++++++++++-
.../hwtracing/coresight/coresight-funnel.c | 22 +-
drivers/hwtracing/coresight/coresight-priv.h | 9 +-
.../coresight/coresight-replicator.c | 31 +-
drivers/hwtracing/coresight/coresight-stm.c | 50 +-
.../hwtracing/coresight/coresight-tmc-etf.c | 38 +-
.../hwtracing/coresight/coresight-tmc-etr.c | 20 +-
drivers/hwtracing/coresight/coresight-tmc.c | 16 +-
drivers/hwtracing/coresight/coresight-tpiu.c | 32 +-
drivers/hwtracing/coresight/coresight.c | 130 +++-
include/linux/coresight.h | 230 +++++-
21 files changed, 1449 insertions(+), 494 deletions(-)
--
2.24.1
More information about the linux-arm-kernel
mailing list