[PATCH v2 2/5] docs: media: add documentation for media client usage stats
From: Detlev Casanova <detlev.casanova@collabora.com>
Date: 2026-06-17 18:11:28
Also in:
linux-media, linux-rockchip, lkml
Subsystem:
media input infrastructure (v4l/dvb), the rest · Maintainers:
Mauro Carvalho Chehab, Linus Torvalds
From: Christopher Healy <redacted> Document the media fdinfo interface for per-file-descriptor usage statistics exposed by stateless V4L2 codec drivers via /proc/<pid>/fdinfo/<fd>. This interface is designed for stateless (request API based) codec devices where the kernel driver has per-job visibility into hardware execution. Stateful codecs cannot support all of this because their firmware manages job scheduling opaquely. The specification defines media- prefixed keys for engine utilization time, and operating frequency, following the same conventions as the DRM fdinfo mechanism documented in drm-usage-stats.rst. More fields can be added later. Signed-off-by: Christopher Healy <redacted> Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com> --- .../userspace-api/media/drivers/index.rst | 1 + .../media/drivers/media-usage-stats.rst | 85 ++++++++++++++++++++++ 2 files changed, 86 insertions(+)
diff --git a/Documentation/userspace-api/media/drivers/index.rst b/Documentation/userspace-api/media/drivers/index.rst
index 02967c9b18d6..61879738836c 100644
--- a/Documentation/userspace-api/media/drivers/index.rst
+++ b/Documentation/userspace-api/media/drivers/index.rst@@ -34,6 +34,7 @@ For more details see the file COPYING in the source distribution of Linux. imx-uapi mali-c55 max2175 + media-usage-stats npcm-video omap3isp-uapi thp7312
diff --git a/Documentation/userspace-api/media/drivers/media-usage-stats.rst b/Documentation/userspace-api/media/drivers/media-usage-stats.rst
new file mode 100644
index 000000000000..d3dc07002f62
--- /dev/null
+++ b/Documentation/userspace-api/media/drivers/media-usage-stats.rst@@ -0,0 +1,85 @@ +.. SPDX-License-Identifier: GPL-2.0 + +.. _media-usage-stats: + +========================== +Media client usage stats +========================== + +Stateless V4L2 codec drivers can optionally expose per-file-descriptor usage +statistics via ``/proc/<pid>/fdinfo/<fd>``. This is analogous to the DRM fdinfo +mechanism documented in :ref:`drm-client-usage-stats`, but uses the ``media-`` +key prefix for V4L2 media devices. + +This interface is specific to stateless (request API based) codec devices, +including both decoders and encoders. With stateless codecs, the kernel driver +explicitly submits each frame to the hardware and receives a completion +interrupt, providing a clean per-job boundary that can be attributed to the +submitting file descriptor. + +Stateful codec devices cannot support this interface because their firmware +manages job scheduling internally. The kernel driver submits bitstream data +but has no visibility into per-frame hardware execution timing. + +Implementation +============== + +The V4L2 core provides the plumbing: drivers implement the ``show_fdinfo`` +callback in ``struct v4l2_file_operations``, and the core wires it into the +kernel ``struct file_operations`` so that ``/proc/<pid>/fdinfo/<fd>`` output +includes the driver-provided keys. + +File format specification +========================= + +- File shall contain one key value pair per one line of text. +- Colon character (``:``) must be used to delimit keys and values. +- All standardised keys shall be prefixed with ``media-``. +- Driver-specific keys shall be prefixed with ``driver_name-``. + +Mandatory keys +-------------- + +- media-driver: <valstr> + + String shall contain the name of the media driver. + +- media-type: <valstr> + + String shall identify the type of media engine exposed through this file + descriptor. Standard values are ``decoder`` and ``encoder``. + +Utilization keys +---------------- + +- media-engine-usage: <uint> ns + + Time in nanoseconds that the hardware engine spent busy processing work + belonging to this file descriptor. The engine being measured is identified + by the ``media-type`` key. + + Values are not required to be constantly monotonic if it makes the driver + implementation easier, but are required to catch up with the previously + reported larger value within a reasonable period. + +Frequency keys +-------------- + +- media-maxfreq: <uint> Hz + + Maximum operating frequency of the main engine clock. + +- media-curfreq: <uint> Hz + + Current operating frequency of the main engine clock. + +Example output +============== + +:: + + media-driver: hantro-vpu + media-type: decoder + media-engine-usage: 123456789 ns + media-maxfreq: 600000000 Hz + media-curfreq: 600000000 Hz
--
2.54.0