All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Subrahmanya Lingappa <subrahmanya.lingappa@oss.qualcomm.com>,
	Cristian Marussi <cristian.marussi@arm.com>
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org,
	linux-doc@vger.kernel.org, sudeep.holla@kernel.org,
	james.quinlan@broadcom.com, f.fainelli@gmail.com,
	vincent.guittot@linaro.org, etienne.carriere@st.com,
	peng.fan@oss.nxp.com, michal.simek@amd.com, d-gole@ti.com,
	jic23@kernel.org, elif.topuz@arm.com, lukasz.luba@arm.com,
	philip.radford@arm.com, souvik.chakravarty@arm.com,
	leitao@kernel.org, kas@kernel.org, puranjay@kernel.org,
	usama.arif@linux.dev, kernel-team@meta.com
Subject: Re: [PATCH v7 00/23] Introduce SCMI Telemetry support
Date: Wed, 5 Aug 2026 08:14:47 +0200	[thread overview]
Message-ID: <2e1996c3-4525-4239-ad17-4056071c9407@kernel.org> (raw)
In-Reply-To: <CAPxK-6eoSguQXkQyhoKkxos89BL4Y5f43ntv8MAY7xoiNmMeYQ@mail.gmail.com>

On 8/5/26 07:21, Subrahmanya Lingappa wrote:
> Cristian and David,
> 
> On Sun, Aug 2, 2026 at 8:27 PM Cristian Marussi
> <cristian.marussi@arm.com> wrote:
>>
>> Hi all,
>>
>> [TLDR Summary]
>>  [V7 highlights]
>>  - V7 focus was on making the ABI complete feature-wise by adding:
>>    + UUID enumerations
>>    + BATCHED DE_CFG
>>    + BATCH ops with per-DE status
>>    + Generic EVENT Subscription with GENERATION_COUNTER support
>>    + Better UAPI Doxygen docs
>>    + Reserved space to grow scattered all-over
>>  - V7 cleans up all the residual known sparse issues
>>  - While aiming for ABI-completeness, V7 addressed also a few reported
>>    general driver/protocol issues BUT the bulk of remanining Sashiko-V6
>>    complains are still to be tackled
>>
>>  [V8 TODO (getting merge-able)]
>>   - Tackle outstanding Sashiko issues
>>   - [ABI]: more DOCS and examples
>>
>> The upcoming SCMI v4.0 specification [0] introduces a new SCMI protocol
>> dedicated to System Telemetry.
>>
>> In a nutshell, the SCMI Telemetry protocol allows an agent to discover at
>> runtime the set of Telemetry Data Events (DEs) available on a specific
>> platform and provides the means to configure the set of DEs that a user is
>> interested into, while reading them back using the collection method that
>> is deeemed more suitable for the usecase at hand. (...amongst the various
>> possible collection methods allowed by SCMI specification)
>>
>> Without delving into the gory details of the whole SCMI Telemetry protocol
>> let's just say that the SCMI platform/server firmware advertises a number
>> of Telemetry Data Events, each one identified by a 32bit unique ID, and an
>> SCMI agent/client, like Linux, can discover them and read back at will the
>> associated data value in a number of ways.
>>
>> Data collection is mainly intended to happen on demand via shared memory
>> areas exposed by the platform firmware, discovered dynamically via SCMI
>> Telemetry and accessed by Linux on-demand, but some DE can also be reported
>> via SCMI Notifications asynchronous messages or via direct dedicated
>> FastChannels (another kind of SCMI memory based access): all of this
>> underlying mechanism is anyway hidden to the user since it is mediated by
>> the kernel driver which will return the proper data value when queried.
>>
>> Anyway, the set of well-known architected DE IDs defined by the spec is
>> limited to a dozen IDs, which means that the vast majority of DE IDs are
>> customizable per-platform: as a consequence, though, the same ID, say
>> '0x1234', could represent completely different things on different systems.
>>
>> Precise definitions and semantic of such custom Data Event IDs are out of
>> the scope of the SCMI Telemetry specification and of this implementation:
>> they are supposed to be provided using some kind of JSON-like description
>> file that will have to be consumed by a userspace tool which would be
>> finally in charge of making sense of the set of available DEs.
>>
>> IOW, in turn, this means that even though the DEs enumerated via SCMI come
>> with some sort of topological and qualitative description provided by the
>> protocol (like unit of measurements, name, topology info etc), kernel-wise
>> we CANNOT be completely sure of "what is what" without being fed-back some
>> sort of information about the DEs by the afore mentioned userspace tool.
>>
>> For these reasons, currently this series does NOT attempt to register any
>> of these DEs with any of the usual in-kernel subsystems (like HWMON, IIO,
>> PERF etc), simply because we cannot be sure which DE is suitable, or even
>> desirable, for a given subsystem. This also means there are NO in-kernel
>> users of these Telemetry data events as of now.
>>
>> So, while we do not exclude, for the future, to feed/register some of the
>> discovered DEs to/with some of the above mentioned Kernel subsystems, as
>> of now we have ONLY modeled a custom userspace API to make SCMI Telemetry
>> available to userspace tools.
>>
>> With V5 we adopted a pure chardev/IOCTL ABI approach, refining the IOCTL
>> based interface already present with the previous FS-based ABI.
>>
>> INTERFACES
>>
>> For each discovered SCMI Instance a character device named tlm_<N> is
>> created under /dev/scmi/ subtree.
>>
>> The IOCTL interface described at 'include/uapi/linux/scmi.h' is made
>> available to enumerate and configure Telemetry resources: Telemetry data
>> can be collected using a few different IOCTls, depending on the required
>> granularity.
>>
>> Alternatively it is possible to obtain a list of the file descriptors
>> referencing directly the underlying SCMI Telemetry SHMTI memory areas and
>> implement in user space an SCMI Telemetry parser accessing directly the
>> SHMTI, while staying in compliance with the SCMI TDCF format.
>>
>> NOTE THAT from v3 onwards the firmware interface level NOW supports ONLY
>> the latest SCMI v4.0 specification [0].
>>
>> Based on V7.2-rc4, tested on an emulated setup.
>>
>> This series is available also at [1].
>>
>> If you still reading...any feedback welcome :P
>>
>> Thanks,
>> Cristian
>>
>> ---
>> v6 --> v7
>>  - [ABI] IOCTL EVENTS support: GENERATION COUNTER (stlm monitor)
>>  - [ABI] expose DE tracking: UUID/SHMTI/OFFS
>>  - [ABI] IOCTL BATCHED DE_CFG
>>  - [ABI] added per-DE IOCTL BATCH status
>>  - [ABI] new ABI feats flags
>>  - [ABI] improved description in Doxygen docs
>>  - [ABI] added reserved space to grow
>>  - [STLM] added new ABI feats support (generation, UUIDs, location...)
>>  - [SYS/TLM] fixed module_init error path
>>  - [SYS/TLM] fixed interval DISCRETE flags reporting
>>  - [SYS/TLM] check open FMODE before executing a config change
>>  - [SYS/TLM] fixing DEs data cleanup on RESET
>>  - [SYS/TLM] added _RAW helpers to handle non-MMIO TDCF-like accesses
>>    (like Notification payload)
>>  - [SYS/TLM] added UUID rescan logic at DE enable, when DE/UUID association
>>  - [TLM] reworked UUID internal handling (endianity) and use uuid_t type
>>  - [TLM] added generic Telemetry protocol support for events subscription
>>    unknown
>>  - residual sparse fixes
>> v5 --> v6
>>  - rebased on v7.2-rc4
>>  - fixed a lot of Sashiko complains
>>  - fixed ABI issues reported by review (Fayssal)
>>  - added IOCTL TLM_RESET
>>  - added ABI versioning
>>  - added compat_ioctl support
>>  - use a new IOCTL magic name
>>  - better handling of UUID endianity
>>  - reworked all bounds checks in UAPI implementation
>>  - reject oversized SHMTI mmap request
>>  - refined 'stlm' testing tool to be more interactive and to
>>    exercise the full spectrum of IOCTLs ('stlm -h' is your manual
>>    for now :P)
>>  - fully reworked per-protocol notification handling
>>  - dropped the last bit of human readable data attached to the
>>    chardev .read
>> v4 --> v5
>>  - rebased on v7.2-rc1
>>  - dropped FileSystem based driver
>>  - introduced a new simple chardev SCMI driver using Telemetry
>>  - reworked/reviewed the v4 IOCTLs based UAPI
>>  - UAPI: better struct alignment and comments
>>  - UAI: Removed flexible array members
>>  - UAPI: make SCMI Telemetry protocol stack completely independent from
>>          uapi defs
>>  - UAPI: new ioctls support to enable RAW mmap direct access to SCMI SHMTI
>>          areas from userspace
>>  - added new ABI Documentation
>>  - added new SCMI core facility to lookup the current SCMI instance ID
>> v3 --> v4
>>  - rebased on v7.1-rc7
>>  - updatded doc to detail Concurrency model
>>  - bail out on FW_BUG errors
>>  - make all_des_enable/all_des_tstamp_enable entry readable
>>  - refactored access to TDE values
>>  - refactored common accessors for tlm_priv (FIX WARN on kfree)
>>  - make all files by default world readable and user writable (if needed)
>>  - added uid/god/umask mount options (and docs)
>>  - added generation counter to aid spotting config changes (and docs)
>>  - added DebugFS configurable support to debug/dump SHMTI areas (and docs)
>>  - hide FS entries when NOT supported (like des_simple_sample_read)
>>  - fixed output format of des/<NNN>/value to -> <TS> <VALUE>
>>  - renamed top-dir by_components to by-components
>>  - add a .remove method to SCMI System Telemetry Driver
>>  - use kzalloc_obj
>> V2 --> V3
>>  - rebased on v7.0-rc5
>>  - ported the firmware interface to SCMI v4.0 BETA
>>  - split the SCMI protocol layer in a lot of small patches
>>  - completd filesystem and ABI documentation
>>  - renamed components subtree to by_components
>>  - fixed uninitialized var in scmi_telemetry_de_subdir_symlink
>>  - renamd tstamp_exp to tstamp_rate
>>  - swap logic in scmi_telemetry_initial_state_lookup
>>  - use memcpy_from_le32 where required
>>  - changed a dfew dev_err into Telemetry traces
>>  - define and use new helper scmi_telemetry_de_unlink
>>  - simplify a few assignments with ternary ops
>>  - added a missing __mmust_check on the internal SCMI API
>>  - reworked and clarified de_data_read returned errno:
>>         ENODATA vs EINVAL vs ENODEV/ENOENT
>>  - removed some risky/unneeded devres allocations
>>  - various checkpatch fixes
>>  - reworked and clarified usage of traces in Telemetry
>>  - added the missing DT binding for protocol 0x1B
>>  - split out unrelated change around notification from patch
>>    adding support for protocol internal notifier
>>  - more comments
>>
>> V1 --> V2
>>  - rebased on v6.19-rc3
>>  - harden TDCF shared memory areas accesses by using proper accessors
>>  - reworked protocol resources lifecycle to allow lazy enumeration
>>  - using NEW FS mount API
>>  - reworked FS inode allocation to use a std kmem_cache
>>  - fixed a few IOCTLs support routine to support lazy enumeration
>>  - added (RFC) a new FS lazy mount option to support lazily population of
>>    some subtrees of the FS (des/ groups/ components/)
>>  - reworked implementation of components/ alternative FS view to use
>>    symlinks instead of hardlinks
>>  - added a basic simple (RFC) testing tool to exercise UAPI ioctls interface
>>  - hardened Telmetry protocol and driver to support partial out-of-spec FW
>>    lacking some cmds (best effort)
>>  - reworked probing races handling
>>  - reviewed behaviour on unmount/unload
>>  - added support for Boot_ON Telemetry by supporting SCMI Telemetry cmds:
>>    + DE_ENABLED_LIST
>>    + CONFIG_GET
>>  - added FS and ABI docs
>>
>> RFC --> V1
>> ---
>>  - moved from SysFS/chardev to a full fledged FS
>>  - added support for SCMI Telemetry BLK timestamps
>>
>> [0]: https://developer.arm.com/documentation/den0056/f/?lang=en
>> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/cris/linux.git/log/?h=scmi_telemetry_ng_V7
>>
>> Cristian Marussi (23):
>>   firmware: arm_scmi: Add new SCMIv4.0 error codes definitions
>>   firmware: arm_scmi: Allow registration of unknown-size events/reports
>>   firmware: arm_scmi: Introduce protocol instance notifiers
>>   dt-bindings: firmware: arm,scmi: Add support for telemetry protocol
>>   include: trace: Add Telemetry trace events
>>   firmware: arm_scmi: Add basic Telemetry support
>>   firmware: arm_scmi: Add support to parse SHMTIs areas
>>   firmware: arm_scmi: Add Telemetry configuration operations
>>   firmware: arm_scmi: Add Telemetry DataEvent read capabilities
>>   firmware: arm_scmi: Add support for Telemetry reset
>>   firmware: arm_scmi: Add Telemetry notification support
>>   firmware: arm_scmi: Add support for boot-on Telemetry
>>   firmware: arm-scmi: Add telemetry generic event support
>>   firmware: arm_scmi: Add Telemetry generation counter event
>>   firmware: arm_scmi: Add common per-protocol debugfs support
>>   firmware: arm_scmi: Add Telemetry debugfs SHMTI dump support
>>   firmware: arm_scmi: Add Telemetry debugfs ABI documentation
>>   firmware: arm_scmi: Expose per-instance identifier
>>   uapi: Add ARM SCMI Telemetry definitions
>>   firmware: arm_scmi: Add System Telemetry driver
>>   docs: ioctl-number: Add SCMI Ioctls
>>   [RFC] Documentation: Add SCMI System Telemetry documentation
>>   [RFC] tools/scmi: Add SCMI Telemetry testing tool
>>
>>  Documentation/ABI/testing/debugfs-scmi        |   22 +
>>  .../bindings/firmware/arm,scmi.yaml           |    8 +
>>  Documentation/userspace-api/index.rst         |    1 +
>>  .../userspace-api/ioctl/ioctl-number.rst      |    1 +
>>  Documentation/userspace-api/stlm.rst          |  148 +
>>  MAINTAINERS                                   |    1 +
>>  drivers/firmware/arm_scmi/Kconfig             |   24 +
>>  drivers/firmware/arm_scmi/Makefile            |    3 +-
>>  drivers/firmware/arm_scmi/common.h            |   18 +
>>  drivers/firmware/arm_scmi/driver.c            |  119 +-
>>  drivers/firmware/arm_scmi/notify.c            |   38 +-
>>  drivers/firmware/arm_scmi/notify.h            |    8 +-
>>  drivers/firmware/arm_scmi/protocols.h         |   17 +
>>  .../firmware/arm_scmi/scmi_system_telemetry.c | 1515 +++++++
>>  drivers/firmware/arm_scmi/telemetry.c         | 3762 +++++++++++++++++
>>  include/linux/scmi_protocol.h                 |  261 +-
>>  include/trace/events/scmi.h                   |   48 +-
>>  include/uapi/linux/scmi.h                     |  517 +++
>>  tools/testing/scmi/Makefile                   |   25 +
>>  tools/testing/scmi/stlm.c                     | 1371 ++++++
>>  20 files changed, 7877 insertions(+), 30 deletions(-)
>>  create mode 100644 Documentation/userspace-api/stlm.rst
>>  create mode 100644 drivers/firmware/arm_scmi/scmi_system_telemetry.c
>>  create mode 100644 drivers/firmware/arm_scmi/telemetry.c
>>  create mode 100644 include/uapi/linux/scmi.h
>>  create mode 100644 tools/testing/scmi/Makefile
>>  create mode 100644 tools/testing/scmi/stlm.c
>>
>> --
>> 2.54.0
>>
>>
> 
>   Just to close the loop on my earlier comment: the second telemetry provider
>   I  had in mind is now public, RISC-V RPMI Specifications Telemetry
> service group:
> 
>     https://github.com/riscv-non-isa/riscv-rpmi/pull/162
> 
>   V7 has already moved the SCMI ABI in a better direction: explicit ABI
>   features,  reserved growth space, UUID tracking, batched operations,
> per-item status
>   and a  generation event make the interface less brittle than the
> version I first
>   commented on.
> 
>   So I am not asking to block SCMI Telemetry on a generic telemetry UAPI. That
>   would still be premature. My remaining ask is smaller: please keep the
>   chardev-facing descriptor/group/config/sample/mmap handling cleanly
>   separated  from SCMI-private storage and TDCF parsing.

IIRC, this is not a ABI concern, right?

Any kernel internal refactorings can be had later, once RPMI actually lands.

-- 
Cheers,

David

  reply	other threads:[~2026-08-05  6:14 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-02 14:55 [PATCH v7 00/23] Introduce SCMI Telemetry support Cristian Marussi
2026-08-02 14:55 ` [PATCH v7 01/23] firmware: arm_scmi: Add new SCMIv4.0 error codes definitions Cristian Marussi
2026-08-02 14:55 ` [PATCH v7 02/23] firmware: arm_scmi: Allow registration of unknown-size events/reports Cristian Marussi
2026-08-02 14:55 ` [PATCH v7 03/23] firmware: arm_scmi: Introduce protocol instance notifiers Cristian Marussi
2026-08-02 14:55 ` [PATCH v7 04/23] dt-bindings: firmware: arm,scmi: Add support for telemetry protocol Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 05/23] include: trace: Add Telemetry trace events Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 06/23] firmware: arm_scmi: Add basic Telemetry support Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 07/23] firmware: arm_scmi: Add support to parse SHMTIs areas Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 08/23] firmware: arm_scmi: Add Telemetry configuration operations Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 09/23] firmware: arm_scmi: Add Telemetry DataEvent read capabilities Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 10/23] firmware: arm_scmi: Add support for Telemetry reset Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 11/23] firmware: arm_scmi: Add Telemetry notification support Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 12/23] firmware: arm_scmi: Add support for boot-on Telemetry Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 13/23] firmware: arm-scmi: Add telemetry generic event support Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 14/23] firmware: arm_scmi: Add Telemetry generation counter event Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 15/23] firmware: arm_scmi: Add common per-protocol debugfs support Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 16/23] firmware: arm_scmi: Add Telemetry debugfs SHMTI dump support Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 17/23] firmware: arm_scmi: Add Telemetry debugfs ABI documentation Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 18/23] firmware: arm_scmi: Expose per-instance identifier Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 19/23] uapi: Add ARM SCMI Telemetry definitions Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 20/23] firmware: arm_scmi: Add System Telemetry driver Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 21/23] docs: ioctl-number: Add SCMI Ioctls Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 22/23] [RFC] Documentation: Add SCMI System Telemetry documentation Cristian Marussi
2026-08-02 14:56 ` [PATCH v7 23/23] [RFC] tools/scmi: Add SCMI Telemetry testing tool Cristian Marussi
2026-08-05  5:21 ` [PATCH v7 00/23] Introduce SCMI Telemetry support Subrahmanya Lingappa
2026-08-05  6:14   ` David Hildenbrand (Arm) [this message]
2026-08-05 11:06     ` Subrahmanya Lingappa
     [not found] <<20260802145618.1952804-20-cristian.marussi@arm.com>
2026-08-03 22:25 ` [PATCH v7 19/23] uapi: Add ARM SCMI Telemetry definitions Fayssal Benmlih
2026-08-04 10:39   ` Cristian Marussi
     [not found] <<20260802145618.1952804-4-cristian.marussi@arm.com>
2026-08-03 22:52 ` [PATCH v7 03/23] firmware: arm_scmi: Introduce protocol instance notifiers Fayssal Benmlih
2026-08-10 13:35   ` Cristian Marussi
     [not found] <<20260802145618.1952804-7-cristian.marussi@arm.com>
2026-08-03 22:53 ` [PATCH v7 06/23] firmware: arm_scmi: Add basic Telemetry support Fayssal Benmlih
2026-08-10 13:39   ` Cristian Marussi
     [not found] <<20260802145618.1952804-8-cristian.marussi@arm.com>
2026-08-03 22:53 ` [PATCH v7 07/23] firmware: arm_scmi: Add support to parse SHMTIs areas Fayssal Benmlih
2026-08-10 14:06   ` Cristian Marussi
     [not found] <<20260802145618.1952804-9-cristian.marussi@arm.com>
2026-08-03 22:54 ` [PATCH v7 08/23] firmware: arm_scmi: Add Telemetry configuration operations Fayssal Benmlih
2026-08-10 14:13   ` Cristian Marussi
     [not found] <<20260802145618.1952804-1-cristian.marussi@arm.com>
2026-08-03 23:20 ` [PATCH v7 00/23] Introduce SCMI Telemetry support Fayssal Benmlih

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=2e1996c3-4525-4239-ad17-4056071c9407@kernel.org \
    --to=david@kernel.org \
    --cc=arm-scmi@vger.kernel.org \
    --cc=cristian.marussi@arm.com \
    --cc=d-gole@ti.com \
    --cc=elif.topuz@arm.com \
    --cc=etienne.carriere@st.com \
    --cc=f.fainelli@gmail.com \
    --cc=james.quinlan@broadcom.com \
    --cc=jic23@kernel.org \
    --cc=kas@kernel.org \
    --cc=kernel-team@meta.com \
    --cc=leitao@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukasz.luba@arm.com \
    --cc=michal.simek@amd.com \
    --cc=peng.fan@oss.nxp.com \
    --cc=philip.radford@arm.com \
    --cc=puranjay@kernel.org \
    --cc=souvik.chakravarty@arm.com \
    --cc=subrahmanya.lingappa@oss.qualcomm.com \
    --cc=sudeep.holla@kernel.org \
    --cc=usama.arif@linux.dev \
    --cc=vincent.guittot@linaro.org \
    /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.