[v6,0/6] coresight: syscfg: Add config table load via configfs

Message ID 20230511065330.26392-1-mike.leach@linaro.org
Headers
Series coresight: syscfg: Add config table load via configfs |

Message

Mike Leach May 11, 2023, 6:53 a.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.

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

The load attribute is a configfs binary attribute, loading the configuration
table in a similar way as the ACPI table binary attribute for that sub-system.

The configfs binary attribute mechanism supplies a strictly size limited
kernel buffer, providing better safety than other mechnisms, and also has
the advantage of being accessible directly from the command line, and being
part of the existing upstream coresight configuration mechanism in configfs

Configurations loaded in this way are validated and loaded across the entire
system of components atomically. If any part fails to load then the whole
configuration load will be cancelled.

Routines to generate binary configuration table files 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 v5:
1) Possible memory leak removed.
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
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 (6):
  coresight: config: add config table runtime load functionality
  coresight: configfs: Update memory allocation / free for configfs
    elements
  coresight: configfs: Add attributes to load config tables at runtime
  coresight: config: extract shared structures to common header file
  coresight: tools: Add config table file write and reader tools
  Documentation: coresight: docs for config load via configfs

 .../trace/coresight/coresight-config.rst      | 265 ++++++++-
 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     | 513 ++++++++++++++++--
 .../coresight/coresight-syscfg-configfs.h     |   5 +
 .../hwtracing/coresight/coresight-syscfg.c    | 101 +++-
 .../hwtracing/coresight/coresight-syscfg.h    |   6 +-
 tools/coresight/Makefile                      |  56 ++
 tools/coresight/coresight-cfg-bufw.c          | 309 +++++++++++
 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      |  61 +++
 tools/coresight/coresight-cfg-file-read.c     | 227 ++++++++
 tools/coresight/coresight-config-uapi.h       | 105 ++++
 20 files changed, 2503 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-read.c
 create mode 100644 tools/coresight/coresight-config-uapi.h
  

Comments

Linu Cherian May 24, 2023, 4:48 a.m. UTC | #1
Hi Mike,

> -----Original Message-----
> From: Mike Leach <mike.leach@linaro.org>
> Sent: Thursday, May 11, 2023 12:23 PM
> To: linux-arm-kernel@lists.infradead.org; coresight@lists.linaro.org; linux-
> kernel@vger.kernel.org
> Cc: acme@kernel.org; Mike Leach <mike.leach@linaro.org>
> Subject: [EXT] [PATCH v6 0/6] coresight: syscfg: Add config table load via
> configfs
> 
> External Email
> 
> ----------------------------------------------------------------------
> 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.
> 
> Additional attributes - load and unload are provided to in the /config/cs-
> syscfg subsytem base group to implement the load functionality.
> 
> The load attribute is a configfs binary attribute, loading the configuration
> table in a similar way as the ACPI table binary attribute for that sub-system.
> 
> The configfs binary attribute mechanism supplies a strictly size limited kernel
> buffer, providing better safety than other mechnisms, and also has the
> advantage of being accessible directly from the command line, and being part
> of the existing upstream coresight configuration mechanism in configfs
> 
> Configurations loaded in this way are validated and loaded across the entire
> system of components atomically. If any part fails to load then the whole
> configuration load will be cancelled.

Currently configuration load is restricted to ETMs alone, CMIIW. Do you have plans to
extend the generic configuration load support to CTI component as well ? 

> 
> Routines to generate binary configuration table files 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 v5:
> 1) Possible memory leak removed.
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <error27@gmail.com>
> 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 (6):
>   coresight: config: add config table runtime load functionality
>   coresight: configfs: Update memory allocation / free for configfs
>     elements
>   coresight: configfs: Add attributes to load config tables at runtime
>   coresight: config: extract shared structures to common header file
>   coresight: tools: Add config table file write and reader tools
>   Documentation: coresight: docs for config load via configfs
> 
>  .../trace/coresight/coresight-config.rst      | 265 ++++++++-
>  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     | 513 ++++++++++++++++--
>  .../coresight/coresight-syscfg-configfs.h     |   5 +
>  .../hwtracing/coresight/coresight-syscfg.c    | 101 +++-
>  .../hwtracing/coresight/coresight-syscfg.h    |   6 +-
>  tools/coresight/Makefile                      |  56 ++
>  tools/coresight/coresight-cfg-bufw.c          | 309 +++++++++++
>  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      |  61 +++
>  tools/coresight/coresight-cfg-file-read.c     | 227 ++++++++
>  tools/coresight/coresight-config-uapi.h       | 105 ++++
>  20 files changed, 2503 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-read.c
>  create mode 100644 tools/coresight/coresight-config-uapi.h
> 
> --
> 2.17.1
> 
> _______________________________________________
> CoreSight mailing list -- coresight@lists.linaro.org To unsubscribe send an
> email to coresight-leave@lists.linaro.org
  
Mike Leach May 24, 2023, 8:04 a.m. UTC | #2
Hi Linu



On Wed, 24 May 2023 at 05:48, Linu Cherian <lcherian@marvell.com> wrote:
>
> Hi Mike,
>
> > -----Original Message-----
> > From: Mike Leach <mike.leach@linaro.org>
> > Sent: Thursday, May 11, 2023 12:23 PM
> > To: linux-arm-kernel@lists.infradead.org; coresight@lists.linaro.org; linux-
> > kernel@vger.kernel.org
> > Cc: acme@kernel.org; Mike Leach <mike.leach@linaro.org>
> > Subject: [EXT] [PATCH v6 0/6] coresight: syscfg: Add config table load via
> > configfs
> >
> > External Email
> >
> > ----------------------------------------------------------------------
> > 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.
> >
> > Additional attributes - load and unload are provided to in the /config/cs-
> > syscfg subsytem base group to implement the load functionality.
> >
> > The load attribute is a configfs binary attribute, loading the configuration
> > table in a similar way as the ACPI table binary attribute for that sub-system.
> >
> > The configfs binary attribute mechanism supplies a strictly size limited kernel
> > buffer, providing better safety than other mechnisms, and also has the
> > advantage of being accessible directly from the command line, and being part
> > of the existing upstream coresight configuration mechanism in configfs
> >
> > Configurations loaded in this way are validated and loaded across the entire
> > system of components atomically. If any part fails to load then the whole
> > configuration load will be cancelled.
>
> Currently configuration load is restricted to ETMs alone, CMIIW. Do you have plans to
> extend the generic configuration load support to CTI component as well ?
>

Yes CTI support is in a follow up set.

This set enables the load mechanisms - there are two follow up sets -
the first that extends ETM support, and a second that allows
programming of CTIs and other components as well.

Regards

Mike

> >
> > Routines to generate binary configuration table files 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 v5:
> > 1) Possible memory leak removed.
> > Reported-by: kernel test robot <lkp@intel.com>
> > Reported-by: Dan Carpenter <error27@gmail.com>
> > 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 (6):
> >   coresight: config: add config table runtime load functionality
> >   coresight: configfs: Update memory allocation / free for configfs
> >     elements
> >   coresight: configfs: Add attributes to load config tables at runtime
> >   coresight: config: extract shared structures to common header file
> >   coresight: tools: Add config table file write and reader tools
> >   Documentation: coresight: docs for config load via configfs
> >
> >  .../trace/coresight/coresight-config.rst      | 265 ++++++++-
> >  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     | 513 ++++++++++++++++--
> >  .../coresight/coresight-syscfg-configfs.h     |   5 +
> >  .../hwtracing/coresight/coresight-syscfg.c    | 101 +++-
> >  .../hwtracing/coresight/coresight-syscfg.h    |   6 +-
> >  tools/coresight/Makefile                      |  56 ++
> >  tools/coresight/coresight-cfg-bufw.c          | 309 +++++++++++
> >  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      |  61 +++
> >  tools/coresight/coresight-cfg-file-read.c     | 227 ++++++++
> >  tools/coresight/coresight-config-uapi.h       | 105 ++++
> >  20 files changed, 2503 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-read.c
> >  create mode 100644 tools/coresight/coresight-config-uapi.h
> >
> > --
> > 2.17.1
> >
> > _______________________________________________
> > CoreSight mailing list -- coresight@lists.linaro.org To unsubscribe send an
> > email to coresight-leave@lists.linaro.org