mbox series

[v7,0/9] coresight: syscfg: Add configuration table load

Message ID 20241127134256.2254851-1-mike.leach@linaro.org (mailing list archive)
Headers show
Series coresight: syscfg: Add configuration table load | expand

Message

Mike Leach Nov. 27, 2024, 1:42 p.m. UTC
This set extends the configuration management support to allow loading and
unloading of configurations as structured tables.

The existing coresight configuration configfs API is additionally extended
to use this table functionality to load and unload configuration tables
as binary files.

This allows coresight configurations to be loaded at runtime, and independently
of kernel version, without the requirement to re-compile as built in kernel
modules.

Loading configurations in this way provides a method for atomically programming
the trace control elements (e.g. filters and triggers) of multiple connected
CoreSight components as a single system for a trace session when selected on
the command line both when running trace via perf or running trace via  sysfs.

All configuration are validated at load time as being compatible with the
CoreSight system in use.

Additional load and unload attributes are provided in the
/config/cs-syscfg subsytem base group to implement the load functionality.

Routines to generate configuration tables are supplied in
./tools/coresight.

Example generator and reader applications are provided.

Tools may be cross compiled or built for use on host system.

Documentation is updated to describe feature usage.

Changes since v6:
1) Rebased to coresight/next - 6.12-rc4
2) Adjusted patches to split the load/unload API from the configfs attribute
   declarations
3) As unload order is strictly enforced to ensure dependencies are not broken,
   unload is now a simple write to attribute to automatically unload the last
   loaded configuration without need for name of configuration.

Changes since v5:
1) Possible memory leak removed.
Reported-by: kernel test robot.
Reported-by: Dan Carpenter
2) Reuse mechanism for reader code revised. (Christoph)
3) Unload mechnism now by name in standard attribute, rather than
entire file
4) Mechanism to check last loaded configuration can be unloaded.
5) Documentation updates.

Changes since v4:
1) Update coresight/next - 6.1-rc3
2) Update to lockdep fixes to avoid read lock race in configfs.

Changes since v3:
1) Rebase & tested on coresight/next - 5.19-rc3 - which includes the
fix patch for earlier configfs works.
2) Lockdep investigations resulted in re-design of some of the code
accessing configfs.
3) moved load and unload attributes to root of cs-syscfg. (Mathieu)
4) Additional minor fixes suggested by Mathieu.
5) Memory for configfs loaded and unloaded configurations is now
explicitly freed.
6) LOCKDEP nesting fix for configfs base code (fs/configfs/dir.c)

Changes since v2:
1) Rebased & tested on coresight/next - 5.18-rc2
2) Moved coresight config generator and reader programs from samples to
tools/coresight. Docs updated to match. (suggested by Mathieu)
3) userspace builds now use userspace headers from tools/...
4) Other minor fixes from Mathieu's review.

Changes since v1:
1) Rebased to coresight/next - 5.16-rc1 with previous coresight config
set applied.
2) Makefile.host fixed to default to all target.

Mike Leach (9):
  coresight: config: Add configuration table processing funtionality
  coresight: configfs: Update memory allocation / free for configfs
    elements
  coresight: config: API to dynamically load / unload config tables
  coresight: configfs: Add static type for config attributes
  coresight: configfs: Add attributes for unload operations
  coresight: configfs: Add attribute to load a configuration table
  coresight: config: extract shared structures to common header file
  coresight: tools: Add configuration table test tools
  Documentation: coresight: Docs for configuration table load

 .../trace/coresight/coresight-config.rst      | 287 ++++++++-
 MAINTAINERS                                   |   1 +
 drivers/hwtracing/coresight/Makefile          |   3 +-
 .../coresight/coresight-config-desc.h         | 105 ++++
 .../coresight/coresight-config-table.c        | 431 +++++++++++++
 .../coresight/coresight-config-table.h        | 151 +++++
 .../hwtracing/coresight/coresight-config.h    |  98 +--
 .../coresight/coresight-syscfg-configfs.c     | 577 ++++++++++++++++--
 .../hwtracing/coresight/coresight-syscfg.c    | 103 +++-
 .../hwtracing/coresight/coresight-syscfg.h    |  19 +-
 tools/coresight/Makefile                      |  56 ++
 tools/coresight/coresight-cfg-bufw.c          | 328 ++++++++++
 tools/coresight/coresight-cfg-bufw.h          |  26 +
 tools/coresight/coresight-cfg-example1.c      |  62 ++
 tools/coresight/coresight-cfg-example2.c      |  95 +++
 tools/coresight/coresight-cfg-examples.h      |  25 +
 tools/coresight/coresight-cfg-file-gen.c      |  58 ++
 tools/coresight/coresight-cfg-file-gen.h      |  17 +
 tools/coresight/coresight-cfg-file-read.c     | 239 ++++++++
 tools/coresight/coresight-config-uapi.h       | 105 ++++
 20 files changed, 2644 insertions(+), 142 deletions(-)
 create mode 100644 drivers/hwtracing/coresight/coresight-config-desc.h
 create mode 100644 drivers/hwtracing/coresight/coresight-config-table.c
 create mode 100644 drivers/hwtracing/coresight/coresight-config-table.h
 create mode 100644 tools/coresight/Makefile
 create mode 100644 tools/coresight/coresight-cfg-bufw.c
 create mode 100644 tools/coresight/coresight-cfg-bufw.h
 create mode 100644 tools/coresight/coresight-cfg-example1.c
 create mode 100644 tools/coresight/coresight-cfg-example2.c
 create mode 100644 tools/coresight/coresight-cfg-examples.h
 create mode 100644 tools/coresight/coresight-cfg-file-gen.c
 create mode 100644 tools/coresight/coresight-cfg-file-gen.h
 create mode 100644 tools/coresight/coresight-cfg-file-read.c
 create mode 100644 tools/coresight/coresight-config-uapi.h