RE: [EXT] [PATCH v6 0/6] coresight: syscfg: Add config table load via configfs

Linu Cherian posted 6 patches 2 years, 8 months ago
Only 0 patches received!
RE: [EXT] [PATCH v6 0/6] coresight: syscfg: Add config table load via configfs
Posted by Linu Cherian 2 years, 8 months ago
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
Re: [EXT] [PATCH v6 0/6] coresight: syscfg: Add config table load via configfs
Posted by Mike Leach 2 years, 8 months ago
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



-- 
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK