Linux-ARM-Kernel Archive on 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:15 UTC|newest]

Thread overview: 30+ 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-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox