Re: odd kernel messages when running v4l2-compliance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2017-01-25 21:38:05 +0100, Hans Verkuil wrote:
> On 01/25/2017 08:15 PM, Niklas Söderlund wrote:
> > Hi Hans,
> > 
> > I have noticed an odd printout when running v4l2-compliance while 
> > testing the rcar-vin driver. When testing (v4l2-compliance -d 0) on 
> > ARM64 I see the following messages:
> > 
> > [ 1411.016069] compat_ioctl32: unexpected VIDIOC_FMT1 type 0
> > [ 1411.022981] compat_ioctl32: unexpected VIDIOC_FMT1 type 128
> > [ 1411.033152] compat_ioctl32: unexpected VIDIOC_FMT1 type 128
> > [ 1411.043283] compat_ioctl32: unexpected VIDIOC_FMT1 type 128
> > 
> > Running the same rcar-vin driver on ARM and I see no such messages.  
> > There can of course be problems with my driver but after digging around
> > a bit I'm a bit confused, maybe you can help me understand where the 
> > true problem is.
> > 
> > In the kernel the messages originate from __get_v4l2_format32() in
> > drivers/media/v4l2-core/v4l2-compat-ioctl32.c and they are printed if 
> > the format type is unknown, that is is not one of the specified ones in 
> > a switch statement. That is all entries of enum v4l2_buf_type except 
> > V4L2_BUF_TYPE_PRIVATE.
> > 
> >     enum v4l2_buf_type {
> >             V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,
> >             V4L2_BUF_TYPE_VIDEO_OUTPUT         = 2,
> >             V4L2_BUF_TYPE_VIDEO_OVERLAY        = 3,
> >             V4L2_BUF_TYPE_VBI_CAPTURE          = 4,
> >             V4L2_BUF_TYPE_VBI_OUTPUT           = 5,
> >             V4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6,
> >             V4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7,
> >             V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
> >             V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
> >             V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE  = 10,
> >             V4L2_BUF_TYPE_SDR_CAPTURE          = 11,
> >             V4L2_BUF_TYPE_SDR_OUTPUT           = 12,
> >             /* Deprecated, do not use */
> >             V4L2_BUF_TYPE_PRIVATE              = 0x80,
> >     };
> > 
> > 
> > In v4l2-compliance the message is trigged inside testGetFormats() from 
> > utils/v4l2-compliance/v4l2-test-formats.cpp by:
> > 
> >     for (type = 0; type <= V4L2_BUF_TYPE_LAST; type++) {
> >             createInvalidFmt(fmt, clip, type);
> >             ret = doioctl(node, VIDIOC_G_FMT, &fmt);
> > 
> >             ....
> >     }
> > 
> > Here V4L2_BUF_TYPE_LAST is defined to V4L2_BUF_TYPE_SDR_OUTPUT and the 
> > enum struct is the same as in the kernel since it's included from 
> > include/linux/videodev2.h. One format is created with type = 0 and one 
> > with type = 128 which is why the messages gets printed by the kernel.
> > 
> > Is this something I should somehow handle in my driver (I can't see how 
> > I could even do that)? Or is it expected that v4l2-compliance
> > should provoke this messages in order to test the API and I should not 
> > worry about the messages when using v4l2-compliance?
> > 
> 
> Those messages really should be pr_debug instead of pr_info. The idea is
> that when a new format type is added, then that should also be supported
> in the 32-bit compat code. The warning helps identifying this.
> 
> However, the compliance test has a few tests with incorrect type values to
> check that the driver handle those correctly (returns EINVAL), so those
> tests trigger the compat code messages.
> 
> It's harmless, and you only get them when running a 32-bit v4l2-compliance
> on a 64-bit system.

I see, thanks for the explanation. I guess this is what I get for being 
lazy and reusing my 32-bit NFS root on my 64-bit systems :-)

> 
> Regards,
> 
> 	Hans

-- 
Regards,
Niklas Söderlund
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux