Re: [RFC PATCH 1/7] media: v4l2-ctrls: Add V4L2_CID_MEMORY_USAGE control

From: Nicolas Dufresne

Date: Wed Apr 08 2026 - 17:11:55 EST


Le jeudi 02 avril 2026 à 11:14 +0800, Ming Qian(OSS) a écrit :
> Hi Nicolas,
>
> On 4/1/2026 10:23 AM, Ming Qian(OSS) wrote:
> > Hi Nicolas,
> >
> > On 3/31/2026 10:54 PM, Nicolas Dufresne wrote:
> > > Le mardi 31 mars 2026 à 10:33 -0400, Frank Li a écrit :
> > > > On Tue, Mar 31, 2026 at 03:23:11PM +0800, ming.qian@xxxxxxxxxxx wrote:
> > > > > From: Ming Qian <ming.qian@xxxxxxxxxxx>
> > > > >
> > > > > Add a new read-only control V4L2_CID_MEMORY_USAGE that allows
> > > > > applications to query the total amount of memory currently used
> > > > > by a device instance.
> > > > >
> > > > > This control reports the memory consumption in bytes, including
> > > > > internal buffers, intermediate processing data, and other
> > > > > driver-managed allocations. Applications can use this information
> > > > > for debugging, resource monitoring, or making informed decisions
> > > > > about buffer allocation strategies.
> > > > >
> > > > > Signed-off-by: Ming Qian <ming.qian@xxxxxxxxxxx>
> > > > > ---
> > > >
> > > > Not sure why not export these information by debugfs, or any benefit vs
> > > > debugfs?
> > >
> > > There is also a on-going proposal that uses fdinfo.
> > >
> > > Nicolas
> > >
> >
> > Thanks for the reminder about the ongoing fdinfo proposal.
> >
> > Just to confirm, you are referring to Detlev’s ongoing fdinfo proposal,
> > specifically this series:
> > https://lore.kernel.org/lkml/20260212162328.192217-1-
> > detlev.casanova@xxxxxxxxxxxxx/
> >
> > I will align my work with it and switch to using fdinfo.
> > Once the show_fdinfo support from that series is merged, I will prepare
> > the next revision of my patch accordingly.
> >
> > Regards,
> > Ming
> >
>
> Regarding the discussion about using fdinfo instead of a V4L2 control, I
> have two questions:
>
> 1. Key consistency in fdinfo
> fdinfo uses key–value pairs, which is flexible, but if multiple
> drivers want to expose the same “memory usage” information,
> they need to agree on a common key name and meaning. Otherwise
> user‑space must handle each driver differently. A V4L2 control
> naturally provides a unified interface without this coordination
> effort.
>
>
> 2. Lack of notification in fdinfo
> With a control, user‑space can subscribe to control events and
> receive notifications when the memory usage changes. fdinfo does
> not have a built‑in event mechanism, so users must either poll
> or rely on additional eventfd‑like or custom event mechanisms.
>
> Do you have any suggestions or existing practices to address these two
> issues when using fdinfo?
>
> Thanks again for your time and comments.

Added Detlev in CC. You can also refer to his work through:

https://lore.kernel.org/all/20260212162328.192217-1-detlev.casanova@xxxxxxxxxxxxx/

Nicolas

>
> Regards,
> Ming
>
> > > >
> > > > Generanlly document should be first patch, then driver change.
> > > >
> > > > Frank
> > > >
> > > > >   drivers/media/v4l2-core/v4l2-ctrls-defs.c | 8 ++++++++
> > > > >   include/uapi/linux/v4l2-controls.h        | 4 +++-
> > > > >   2 files changed, 11 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/
> > > > > media/v4l2-core/v4l2-ctrls-defs.c
> > > > > index 551426c4cd01..053db78ff661 100644
> > > > > --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> > > > > +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> > > > > @@ -831,6 +831,7 @@ const char *v4l2_ctrl_get_name(u32 id)
> > > > >       case V4L2_CID_ALPHA_COMPONENT:        return "Alpha Component";
> > > > >       case V4L2_CID_COLORFX_CBCR:        return "Color Effects, CbCr";
> > > > >       case V4L2_CID_COLORFX_RGB:              return "Color Effects,
> > > > > RGB";
> > > > > +    case V4L2_CID_MEMORY_USAGE:        return "Memory Usage";
> > > > >
> > > > >       /*
> > > > >        * Codec controls
> > > > > @@ -1476,6 +1477,13 @@ void v4l2_ctrl_fill(u32 id, const char
> > > > > **name, enum v4l2_ctrl_type *type,
> > > > >           *min = 0;
> > > > >           *max = 0xffff;
> > > > >           break;
> > > > > +    case V4L2_CID_MEMORY_USAGE:
> > > > > +        *type = V4L2_CTRL_TYPE_INTEGER64;
> > > > > +        *flags |= V4L2_CTRL_FLAG_READ_ONLY;
> > > > > +        *min = 0;
> > > > > +        *max = S64_MAX;
> > > > > +        *step = 1;
> > > > > +        break;
> > > > >       case V4L2_CID_FLASH_FAULT:
> > > > >       case V4L2_CID_JPEG_ACTIVE_MARKER:
> > > > >       case V4L2_CID_3A_LOCK:
> > > > > diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/
> > > > > linux/v4l2-controls.h
> > > > > index 68dd0c4e47b2..02c6f960d38e 100644
> > > > > --- a/include/uapi/linux/v4l2-controls.h
> > > > > +++ b/include/uapi/linux/v4l2-controls.h
> > > > > @@ -110,8 +110,10 @@ enum v4l2_colorfx {
> > > > >   #define V4L2_CID_COLORFX_CBCR            (V4L2_CID_BASE+42)
> > > > >   #define V4L2_CID_COLORFX_RGB            (V4L2_CID_BASE+43)
> > > > >
> > > > > +#define V4L2_CID_MEMORY_USAGE            (V4L2_CID_BASE+44)
> > > > > +
> > > > >   /* last CID + 1 */
> > > > > -#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+44)
> > > > > +#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+45)
> > > > >
> > > > >   /* USER-class private control IDs */
> > > > >
> > > > > --
> > > > > 2.53.0
> > > > >
> >

Attachment: signature.asc
Description: This is a digitally signed message part