All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Mike Leach <mike.leach@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org, coresight@lists.linaro.org,
	suzuki.poulose@arm.com, leo.yan@linaro.org
Subject: Re: [PATCH v2 6/6] Documentation: coresight: docs for config load via configfs
Date: Thu, 13 Jan 2022 11:15:57 -0700	[thread overview]
Message-ID: <20220113181557.GB967130@p14s> (raw)
In-Reply-To: <20211130220100.25888-7-mike.leach@linaro.org>

More comments...

On Tue, Nov 30, 2021 at 10:01:00PM +0000, Mike Leach wrote:
> Add documentation covering the configfs updates that allow
> binary configuration files to be loaded and unloaded via configfs,
> along with the demonstration programs in samples.
> 
> Signed-off-by: Mike Leach <mike.leach@linaro.org>
> ---
>  .../trace/coresight/coresight-config.rst      | 151 +++++++++++++++++-
>  1 file changed, 145 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/trace/coresight/coresight-config.rst b/Documentation/trace/coresight/coresight-config.rst
> index 6d5ffa6f7347..f11def230fab 100644
> --- a/Documentation/trace/coresight/coresight-config.rst
> +++ b/Documentation/trace/coresight/coresight-config.rst
> @@ -152,7 +152,7 @@ follows::
>  
>      $ cd configurations/
>      $ ls
> -    autofdo
> +    autofdo last_load_status  load  unload
>      $ cd autofdo/
>      $ ls
>      description  feature_refs  preset1  preset3  preset5  preset7  preset9
> @@ -278,9 +278,19 @@ Creating and Loading Custom Configurations
>  ==========================================
>  
>  Custom configurations and / or features can be dynamically loaded into the
> -system by using a loadable module.
> +system by using a loadable module, or by loading a binary configuration
> +file in configfs.
> +
> +Loaded configurations can use previously loaded features. The system will
> +ensure that it is not possible to unload a feature that is currently in
> +use, by enforcing the unload order as the strict reverse of the load order.
> +
> +An example of a custom configuration module, and generators for binary
> +configuration files are found in './samples/coresight'.
>  
> -An example of a custom configuration is found in ./samples/coresight.
> +
> +Using a Loadable Module
> +-----------------------
>  
>  This creates a new configuration that uses the existing built in
>  strobing feature, but provides a different set of presets.
> @@ -289,6 +299,135 @@ When the module is loaded, then the configuration appears in the configfs
>  file system and is selectable in the same way as the built in configuration
>  described above.
>  
> -Configurations can use previously loaded features. The system will ensure
> -that it is not possible to unload a feature that is currently in use, by
> -enforcing the unload order as the strict reverse of the load order.
> +The file 'coresight-cfg-sample.c' contains the configuration and module
> +initialisation code needed to create the loadable module.
> +
> +This will be built alongside the kernel modules if select in KConfig.
> +
> +
> +Using a Binary Configuration File
> +---------------------------------
> +
> +Building the samples creates the 'coresight-cfg-filegen' program that will
> +generate a configuration binary 'example1.cscfg' that can be loaded into the
> +system using configfs. The configuration declared in the source file
> +'coresight-cfg-filegen.c' is named 'autofdo3' - the name that will be used
> +once loaded.
> +
> +The source files 'coresight-cfg-bufw.h' and 'coresight-cfg-bufw.c' provide a
> +standard function to convert a configuration declared in 'C' into the correct
> +binary buffer format. These files can be re-used to create new custom
> +configurations.
> +
> +The program  'coresight-cfg-file-read' can read back and print a configuration
> +binary. This is built using the reader from the driver code.
> +
> +There are additional attributes in the configurations directory - load, unload
> +and last_load_status that can be used to load and unload configuration
> +binary files. To load, 'cat' the binary config into the load attribute::
> +
> +    $ ls /config/cs-syscfg/configurations/
> +    autofdo last_load_status  load  unload
> +    $ cat example1.cscfg > /config/cs-syscfg/configurations/load
> +    $ ls /config/cs-syscfg/configurations/
> +    autofdo  autofdo3  last_load_status  load  unload
> +    $ cat /config/cs-syscfg/configurations/last_load_status
> +    OK: configuration file loaded (autofdo3).
> +
> +To unload, use the same file in the unload attribute::
> +
> +    $ cat example1.cscfg > /config/cs-syscfg/configurations/unload
> +    $ cat /config/cs-syscfg/configurations/last_load_status
> +    OK: configuration file unloaded (autofdo3).
> +    ls /config/cs-syscfg/configurations/
> +    autofdo  last_load_status  load  unload

I'm not certain that "last_load_status" is needed.  To me seeing the name of a
newly added configuration should be enough to confirm a successful status.  The
same applies to unload.

Thanks,
Mathieu

> +
> +The generator and reader programs can also be built directly, separately from
> +the kernel build by using the 'Makefile.host' file. This allows native binaries
> +to be created on the host machine rather than cross compiled version for the
> +target.
> +
> +
> +Binary Configuration File Format
> +--------------------------------
> +
> +The file format is defined in the source file **coresight-config-file.h**
> +
> +The source reader and generator examples produce a binary of this format.
> +
> +This arrangement is reproduced below:-
> +
> +Overall File structure
> +~~~~~~~~~~~~~~~~~~~~~~
> +
> +::
> +
> +   [cscfg_file_header]   // Mandatory
> +   [CONFIG_ELEM]         // Optional - one per file, if present, first element in file.
> +   [FEATURE_ELEM]*       // Optional - multiple, defined by cscfg_file_header.nr_features
> +
> +File is invalid if both [CONFIG_ELEM] and [FEATURE_ELEM] are omitted.
> +
> +A file that contains only [FEATURE_ELEM] may be loaded, and the features used
> +by subsequently loaded files with [CONFIG_ELEM] elements.
> +
> +Where [CONFIG_ELEM] is present, then **cscfg_file_header.nr_features** and
> +**CONFIG_ELEM.nr_feat_refs** must have the same value.
> +
> +CONFIG_ELEM element
> +~~~~~~~~~~~~~~~~~~~
> +
> +::
> +
> +   [cscfg_file_elem_header]                // header length value to end of feature strings.
> +   [cscfg_file_elem_str]                   // name of the configuration.
> +   [cscfg_file_elem_str]                   // description of configuration.
> +   [u16 value](nr_presets)                 // number of defined presets.
> +   [u32 value](nr_total_params)            // total parameters defined by all used features.
> +   [u16 value](nr_feat_refs)               // number of features referenced by the configuration
> +   [u64 values] * (nr_presets * nr_total_params)     // the preset values.
> +   [cscfg_file_elem_str] * (nr_feat_refs)  // the features used in the configurations.
> +
> +FEATURE_ELEM element
> +~~~~~~~~~~~~~~~~~~~~
> +
> +::
> +
> +   [cscfg_file_elem_header]                // header length is total bytes to end of param structures.
> +   [cscfg_file_elem_str]                   // feature name.
> +   [cscfg_file_elem_str]                   // feature description.
> +   [u32 value](match_flags)                // flags to associate the feature with a device.
> +   [u16 value](nr_regs)                    // number of registers.
> +   [u16 value](nr_params)                  // number of parameters.
> +   [cscfg_regval_desc struct] * (nr_regs)  // register definitions
> +   [PARAM_ELEM] * (nr_params)              // parameters definitions
> +
> +PARAM_ELEM element
> +~~~~~~~~~~~~~~~~~~
> +
> +::
> +
> +   [cscfg_file_elem_str]         // parameter name.
> +   [u64 value](param_value]      // initial value.
> +
> +Additional definitions.
> +~~~~~~~~~~~~~~~~~~~~~~~
> +
> +The following structures are defined in **coresight-config-file.h**
> +
> + * **struct cscfg_file_header** : This structure contains an initial magic number, the total
> +   length of the file, and the number of features in the file.
> + * **struct cscfg_file_elem_header**: This defines the total length and type of a CONFIG_ELEM
> +   or a FEATURE_ELEM.
> + * **struct cscfg_file_elem_str**: This defines a string and its length.
> +
> +The magic number in cscfg_file_header is defined as two bitfields::
> +
> +   [31:8] Fixed magic number to identify file type.
> +   [7:0]  Current file format version.
> +
> +The following defines determine the maximum overall file size and maximum individual
> +string size::
> +
> +   CSCFG_FILE_MAXSIZE       // maximum overall file size.
> +   CSCFG_FILE_STR_MAXSIZE   // maximum individual string size.
> -- 
> 2.17.1
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-01-13 18:17 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-30 22:00 [PATCH v2 0/6] coresight: syscfg: Extend configfs for config load Mike Leach
2021-11-30 22:00 ` [PATCH v2 1/6] coresight: configfs: Add in functionality for load via configfs Mike Leach
2022-01-28 18:08   ` Mathieu Poirier
2022-02-02 20:40     ` Mike Leach
2021-11-30 22:00 ` [PATCH v2 2/6] coresight: configfs: Add in binary attributes to load files Mike Leach
2022-01-28 18:17   ` Mathieu Poirier
2022-02-02 20:33     ` Mike Leach
2022-02-02 22:33       ` Mathieu Poirier
2021-11-30 22:00 ` [PATCH v2 3/6] coresight: configfs: Modify config files to allow userspace use Mike Leach
2022-01-28 18:33   ` Mathieu Poirier
2022-02-02 20:48     ` Mike Leach
2021-11-30 22:00 ` [PATCH v2 4/6] coresight: samples: Add an example config writer for configfs load Mike Leach
2022-01-13 17:56   ` Mathieu Poirier
2022-01-18 16:38     ` Mike Leach
2022-01-28 18:43   ` Mathieu Poirier
2022-02-02 20:54     ` Mike Leach
2021-11-30 22:00 ` [PATCH v2 5/6] coresight: samples: Add coresight file reader sample program Mike Leach
2021-11-30 22:01 ` [PATCH v2 6/6] Documentation: coresight: docs for config load via configfs Mike Leach
2022-01-12 17:22   ` Mathieu Poirier
2022-01-12 18:43     ` Mathieu Poirier
2022-01-13 18:15   ` Mathieu Poirier [this message]
2022-01-18 16:41     ` Mike Leach
2022-01-10 18:58 ` [PATCH v2 0/6] coresight: syscfg: Extend configfs for config load Mathieu Poirier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220113181557.GB967130@p14s \
    --to=mathieu.poirier@linaro.org \
    --cc=coresight@lists.linaro.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mike.leach@linaro.org \
    --cc=suzuki.poulose@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.