Hi Hans, On Tue, Oct 10, 2023 at 12:24:58PM +0200, Hans de Goede wrote: > Since the stream API is still experimental it is currently locked away > behind the internal, default disabled, v4l2_subdev_enable_streams_api flag. > > Advertising V4L2_SUBDEV_CAP_STREAMS when the streams API is disabled > confuses userspace. E.g. it causes the following libcamera error: > > ERROR SimplePipeline simple.cpp:1497 Failed to reset routes for > /dev/v4l-subdev1: Inappropriate ioctl for device > > Don't report V4L2_SUBDEV_CAP_STREAMS when the streams API is disabled > to avoid problems like this. > > Reported-by: Dennis Bonke <admin@xxxxxxxxxxxxxxx> > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- > -Clearing the V4L2_SUBDEV_FL_STREAMS flag from sd.flags might seem > appealing as an alternative fix. But this causes various v4l2-core bits > to enter different code paths which confuses drivers which set > V4L2_SUBDEV_FL_STREAMS, so this is a bad idea. Thanks, this apparently had been missed while disabling the API. Probably also should be added: Fixes: 9a6b5bf4c1bb ("media: add V4L2_SUBDEV_CAP_STREAMS") Cc: stable@xxxxxxxxxxxxxxx # for >= 6.3 Also cc'd Tomi. > -No Closes: for the Reported-by since this was reported by private email > --- > drivers/media/v4l2-core/v4l2-subdev.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c > index b92348ad61f6..31752c06d1f0 100644 > --- a/drivers/media/v4l2-core/v4l2-subdev.c > +++ b/drivers/media/v4l2-core/v4l2-subdev.c > @@ -502,6 +502,13 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg, > V4L2_SUBDEV_CLIENT_CAP_STREAMS; > int rval; > > + /* > + * If the streams API is not enabled, remove V4L2_SUBDEV_CAP_STREAMS. > + * Remove this when the API is no longer experimental. > + */ > + if (!v4l2_subdev_enable_streams_api) > + streams_subdev = false; > + > switch (cmd) { > case VIDIOC_SUBDEV_QUERYCAP: { > struct v4l2_subdev_capability *cap = arg; -- Regards, Sakari Ailus