On Tue, Aug 4, 2026 at 5:31 PM Brian Daniels <[email protected]> wrote: > > Hi Albert, > > Thanks so much for testing and sharing your results, glad to hear everything > is working. > > Regarding the `VIDIOC_G/S/TRY_EXT_CTRLS` failures, if you were testing with a > passed-through USB camera, I saw the same failures as well. This behavior > depends on how v4l2-compliance changes its logic based on the device's driver > name. I expect this test will pass on the host, and that's because > v4l2-compliance reads the device's driver name as `uvcvideo`. In the guest, > since it's beeing passed-through by virtio-media, the driver name is > `virtio-media`, and thus v4l2-compliance doesn't change its logic, causing > the failure.
Hi Brian, Glad to hear that you had it on your radar and already figured it out. > > I worked around this by patching v4l2-compliance to allow overriding the > device's driver name: > https://lore.kernel.org/all/[email protected]/. > There are more details in [PATCH v5 0/5] of this series if you're curious: > https://lore.kernel.org/all/[email protected]/ Ah true, my bad! I skipped the note when checking your results. I won't work around it myself, given that all the other results match. > > Thanks again, > Brian > > On Tue, Aug 4, 2026 at 8:29 AM Albert Esteve <[email protected]> wrote: >> >> Hi Brian, >> >> On Thu, Jul 23, 2026 at 8:32 PM Brian Daniels <[email protected]> >> wrote: >> > >> > From: Alexandre Courbot <[email protected]> >> > >> > Add the first version of the virtio-media driver. >> > >> > This driver acts roughly as a V4L2 relay between user-space and the >> > virtio virtual device on the host, so it is relatively simple, yet >> > unconventional. It doesn't use VB2 or other frameworks typically used in >> > a V4L2 driver, and most of its complexity resides in correctly and >> > efficiently building the virtio descriptor chain to pass to the host, >> > avoiding copies whenever possible. This is done by >> > scatterlist_builder.[ch]. >> > >> > This version supports MMAP buffers, while USERPTR buffers can also be >> > enabled through a driver option. DMABUF support is still pending. >> > >> > NOTE: This depends on the VIRTIO ID being added in this patch: >> > https://lore.kernel.org/all/[email protected] >> >> Tested on top of [1], with the rust-vmm backend [2], and QEMU patch >> adding the pci device [3]. >> >> In the guest I have enabled allow_userptr parameter and tested video >> capture both with mmap and userptr memory types. Both worked perfectly >> fine. >> >> I also tested v4l2-compliance, with results similar to those pasted >> below. The summary shows: >> >> Total for virtio-media device /dev/video0: 56, Succeeded: 54, >> Failed: 2, Warnings: 0 >> >> The additional failed test with respect to the results shown in the >> cover seems to be `VIDIOC_G/S/TRY_EXT_CTRLS`, where s_ctrl returned >> error 13. Nevertheless, the results are in line with my expectations, >> specially with the camera capture tests, so: >> >> Tested-by: Albert Esteve <[email protected]> >> >> [1] >> https://lore.kernel.org/all/[email protected] >> [2] https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-media >> [3] https://lore.kernel.org/all/[email protected]/ >> >> BR, >> Albert. >> >> >> > >> > Signed-off-by: Alexandre Courbot <[email protected]> >> > Co-developed-by: Brian Daniels <[email protected]> >> > Signed-off-by: Brian Daniels <[email protected]> >> > --- >> > Guest Setup >> > >> > Tests were ran on a Debian 12 guest running with crosvm. The guest image >> > was created with: >> > >> > $ virt-builder debian-12 --root-password password:"" >> > >> > Build crosvm and launch the guest starting at the "Crosvm" section on >> > this page: >> > https://github.com/chromeos/virtio-media/blob/main/TRY_IT_OUT.md#crosvm >> > >> > NOTE: Before running v4l2-compliance in the guest, you need to install >> > v4l-utils and ffmpeg: >> > >> > $ apt update && apt install v4l-utils ffmpeg >> > >> > --- >> > Compliance Testing >> > >> > This was tested using v4l2-compliance. Since virtio-media serves as >> > a proxy to host devices for the guest VMs, we expect the guest >> > compliance test to essentially match the host compliance test for the >> > same device. >> > >> > NOTE: v4l2-compliance changes its test behavior depending on the driver >> > name. In the guest, the driver name for virtio-media proxied-devices is >> > always "virtio-media", even if the actual host device has a driver name >> > of e.g. "uvcvideo". To ensure the test is consistent between the host >> > and the guest, I created a patch for the v4l2-compliance tool that >> > allows you to override the driver name. All test results that follow use >> > this patch: >> > https://lore.kernel.org/r/[email protected]/ >> > >> > All tests used a Logitech USB Webcam C925e. >> > >> > As tested on the host: >> > >> > $ v4l2-compliance -d1 -s >> > >> > v4l2-compliance 1.33.0-5471, 64 bits, 64-bit time_t >> > v4l2-compliance SHA: 9f2d3ea879ff 2026-05-28 14:45:11 >> > >> > Compliance test for uvcvideo device /dev/video1: >> > >> > Driver Info: >> > Driver name : uvcvideo >> > Card type : Logitech Webcam C925e >> > Bus info : usb-0000:04:00.1-3 >> > Driver version : 6.18.14 >> > Capabilities : 0x84a00001 >> > Video Capture >> > Metadata Capture >> > Streaming >> > Extended Pix Format >> > Device Capabilities >> > Device Caps : 0x04200001 >> > Video Capture >> > Streaming >> > Extended Pix Format >> > Media Driver Info: >> > Driver name : uvcvideo >> > Model : Logitech Webcam C925e >> > Serial : 686F371F >> > Bus info : usb-0000:04:00.1-3 >> > Media version : 6.18.14 >> > Hardware revision: 0x00000016 (22) >> > Driver version : 6.18.14 >> > Interface Info: >> > ID : 0x03000002 >> > Type : V4L Video >> > Entity Info: >> > ID : 0x00000001 (1) >> > Name : Logitech Webcam C925e >> > Function : V4L2 I/O >> > Flags : default >> > Pad 0x01000007 : 0: Sink >> > Link 0x0200001f: from remote pad 0x100000a of entity 'Processing >> > 3' (Video Pixel Formatter): Data, Enabled, Immutable >> > >> > Required ioctls: >> > test MC information (see 'Media Driver Info' above): OK >> > test VIDIOC_QUERYCAP: OK >> > test invalid ioctls: OK >> > >> > Allow for multiple opens: >> > test second /dev/video1 open: OK >> > test VIDIOC_QUERYCAP: OK >> > test VIDIOC_G/S_PRIORITY: OK >> > test for unlimited opens: OK >> > >> > Debug ioctls: >> > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) >> > test VIDIOC_LOG_STATUS: OK (Not Supported) >> > >> > Input ioctls: >> > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) >> > test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >> > test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) >> > test VIDIOC_ENUMAUDIO: OK (Not Supported) >> > test VIDIOC_G/S/ENUMINPUT: OK >> > test VIDIOC_G/S_AUDIO: OK (Not Supported) >> > Inputs: 1 Audio Inputs: 0 Tuners: 0 >> > >> > Output ioctls: >> > test VIDIOC_G/S_MODULATOR: OK (Not Supported) >> > test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >> > test VIDIOC_ENUMAUDOUT: OK (Not Supported) >> > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) >> > test VIDIOC_G/S_AUDOUT: OK (Not Supported) >> > Outputs: 0 Audio Outputs: 0 Modulators: 0 >> > >> > Input/Output configuration ioctls: >> > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) >> > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) >> > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) >> > test VIDIOC_G/S_EDID: OK (Not Supported) >> > >> > Control ioctls (Input 0): >> > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK >> > test VIDIOC_QUERYCTRL: OK >> > test VIDIOC_G/S_CTRL: OK >> > fail: v4l2-test-controls.cpp(983): ret != EINVAL (got 13) >> > test VIDIOC_G/S/TRY_EXT_CTRLS: FAIL >> > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK >> > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) >> > Standard Controls: 19 Private Controls: 0 >> > >> > Format ioctls (Input 0): >> > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK >> > test VIDIOC_G/S_PARM: OK >> > test VIDIOC_G_FBUF: OK (Not Supported) >> > test VIDIOC_G_FMT: OK >> > test VIDIOC_TRY_FMT: OK >> > test VIDIOC_S_FMT: OK >> > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) >> > test Cropping: OK (Not Supported) >> > test Composing: OK (Not Supported) >> > test Scaling: OK (Not Supported) >> > >> > Codec ioctls (Input 0): >> > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) >> > test VIDIOC_G_ENC_INDEX: OK (Not Supported) >> > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) >> > >> > Buffer ioctls (Input 0): >> > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK >> > test CREATE_BUFS maximum buffers: OK >> > test VIDIOC_REMOVE_BUFS: OK >> > test VIDIOC_EXPBUF: OK >> > test Requests: OK (Not Supported) >> > test blocking wait: OK >> > >> > Test input 0: >> > >> > Streaming ioctls: >> > test read/write: OK (Not Supported) >> > >> > Video Capture: Frame #000 >> > Video Capture: Frame #001 >> > Video Capture: Frame #002 >> > Video Capture: Frame #003 >> > Video Capture: Frame #004 >> > Video Capture: Frame #005 >> > Video Capture: Frame #006 >> > Video Capture: Frame #007 >> > Video Capture: Frame #008 >> > Video Capture: Frame #009 >> > Video Capture: Frame #010 >> > Video Capture: Frame #011 >> > Video Capture: Frame #012 >> > Video Capture: Frame #013 >> > Video Capture: Frame #014 >> > Video Capture: Frame #015 >> > Video Capture: Frame #016 >> > Video Capture: Frame #017 >> > Video Capture: Frame #018 >> > Video Capture: Frame #019 >> > Video Capture: Frame #020 >> > Video Capture: Frame #021 >> > Video Capture: Frame #022 >> > Video Capture: Frame #023 >> > Video Capture: Frame #024 >> > Video Capture: Frame #025 >> > Video Capture: Frame #026 >> > Video Capture: Frame #027 >> > Video Capture: Frame #028 >> > Video Capture: Frame #029 >> > Video Capture: Frame #030 >> > Video Capture: Frame #031 >> > Video Capture: Frame #032 >> > Video Capture: Frame #033 >> > Video Capture: Frame #034 >> > Video Capture: Frame #035 >> > Video Capture: Frame #036 >> > Video Capture: Frame #037 >> > Video Capture: Frame #038 >> > Video Capture: Frame #039 >> > Video Capture: Frame #040 >> > Video Capture: Frame #041 >> > Video Capture: Frame #042 >> > Video Capture: Frame #043 >> > Video Capture: Frame #044 >> > Video Capture: Frame #045 >> > Video Capture: Frame #046 >> > Video Capture: Frame #047 >> > Video Capture: Frame #048 >> > Video Capture: Frame #049 >> > Video Capture: Frame #050 >> > Video Capture: Frame #051 >> > Video Capture: Frame #052 >> > Video Capture: Frame #053 >> > Video Capture: Frame #054 >> > Video Capture: Frame #055 >> > Video Capture: Frame #056 >> > Video Capture: Frame #057 >> > Video Capture: Frame #058 >> > Video Capture: Frame #059 >> > >> > test MMAP (no poll, REQBUFS): OK >> > >> > Video Capture: Frame #000 (select) >> > Video Capture: Frame #001 (select) >> > Video Capture: Frame #002 (select) >> > Video Capture: Frame #003 (select) >> > Video Capture: Frame #004 (select) >> > Video Capture: Frame #005 (select) >> > Video Capture: Frame #006 (select) >> > Video Capture: Frame #007 (select) >> > Video Capture: Frame #008 (select) >> > Video Capture: Frame #009 (select) >> > Video Capture: Frame #010 (select) >> > Video Capture: Frame #011 (select) >> > Video Capture: Frame #012 (select) >> > Video Capture: Frame #013 (select) >> > Video Capture: Frame #014 (select) >> > Video Capture: Frame #015 (select) >> > Video Capture: Frame #016 (select) >> > Video Capture: Frame #017 (select) >> > Video Capture: Frame #018 (select) >> > Video Capture: Frame #019 (select) >> > Video Capture: Frame #020 (select) >> > Video Capture: Frame #021 (select) >> > Video Capture: Frame #022 (select) >> > Video Capture: Frame #023 (select) >> > Video Capture: Frame #024 (select) >> > Video Capture: Frame #025 (select) >> > Video Capture: Frame #026 (select) >> > Video Capture: Frame #027 (select) >> > Video Capture: Frame #028 (select) >> > Video Capture: Frame #029 (select) >> > Video Capture: Frame #030 (select) >> > Video Capture: Frame #031 (select) >> > Video Capture: Frame #032 (select) >> > Video Capture: Frame #033 (select) >> > Video Capture: Frame #034 (select) >> > Video Capture: Frame #035 (select) >> > Video Capture: Frame #036 (select) >> > Video Capture: Frame #037 (select) >> > Video Capture: Frame #038 (select) >> > Video Capture: Frame #039 (select) >> > Video Capture: Frame #040 (select) >> > Video Capture: Frame #041 (select) >> > Video Capture: Frame #042 (select) >> > Video Capture: Frame #043 (select) >> > Video Capture: Frame #044 (select) >> > Video Capture: Frame #045 (select) >> > Video Capture: Frame #046 (select) >> > Video Capture: Frame #047 (select) >> > Video Capture: Frame #048 (select) >> > Video Capture: Frame #049 (select) >> > Video Capture: Frame #050 (select) >> > Video Capture: Frame #051 (select) >> > Video Capture: Frame #052 (select) >> > Video Capture: Frame #053 (select) >> > Video Capture: Frame #054 (select) >> > Video Capture: Frame #055 (select) >> > Video Capture: Frame #056 (select) >> > Video Capture: Frame #057 (select) >> > Video Capture: Frame #058 (select) >> > Video Capture: Frame #059 (select) >> > >> > test MMAP (select, REQBUFS): OK >> > >> > Video Capture: Frame #000 (epoll) >> > Video Capture: Frame #001 (epoll) >> > Video Capture: Frame #002 (epoll) >> > Video Capture: Frame #003 (epoll) >> > Video Capture: Frame #004 (epoll) >> > Video Capture: Frame #005 (epoll) >> > Video Capture: Frame #006 (epoll) >> > Video Capture: Frame #007 (epoll) >> > Video Capture: Frame #008 (epoll) >> > Video Capture: Frame #009 (epoll) >> > Video Capture: Frame #010 (epoll) >> > Video Capture: Frame #011 (epoll) >> > Video Capture: Frame #012 (epoll) >> > Video Capture: Frame #013 (epoll) >> > Video Capture: Frame #014 (epoll) >> > Video Capture: Frame #015 (epoll) >> > Video Capture: Frame #016 (epoll) >> > Video Capture: Frame #017 (epoll) >> > Video Capture: Frame #018 (epoll) >> > Video Capture: Frame #019 (epoll) >> > Video Capture: Frame #020 (epoll) >> > Video Capture: Frame #021 (epoll) >> > Video Capture: Frame #022 (epoll) >> > Video Capture: Frame #023 (epoll) >> > Video Capture: Frame #024 (epoll) >> > Video Capture: Frame #025 (epoll) >> > Video Capture: Frame #026 (epoll) >> > Video Capture: Frame #027 (epoll) >> > Video Capture: Frame #028 (epoll) >> > Video Capture: Frame #029 (epoll) >> > Video Capture: Frame #030 (epoll) >> > Video Capture: Frame #031 (epoll) >> > Video Capture: Frame #032 (epoll) >> > Video Capture: Frame #033 (epoll) >> > Video Capture: Frame #034 (epoll) >> > Video Capture: Frame #035 (epoll) >> > Video Capture: Frame #036 (epoll) >> > Video Capture: Frame #037 (epoll) >> > Video Capture: Frame #038 (epoll) >> > Video Capture: Frame #039 (epoll) >> > Video Capture: Frame #040 (epoll) >> > Video Capture: Frame #041 (epoll) >> > Video Capture: Frame #042 (epoll) >> > Video Capture: Frame #043 (epoll) >> > Video Capture: Frame #044 (epoll) >> > Video Capture: Frame #045 (epoll) >> > Video Capture: Frame #046 (epoll) >> > Video Capture: Frame #047 (epoll) >> > Video Capture: Frame #048 (epoll) >> > Video Capture: Frame #049 (epoll) >> > Video Capture: Frame #050 (epoll) >> > Video Capture: Frame #051 (epoll) >> > Video Capture: Frame #052 (epoll) >> > Video Capture: Frame #053 (epoll) >> > Video Capture: Frame #054 (epoll) >> > Video Capture: Frame #055 (epoll) >> > Video Capture: Frame #056 (epoll) >> > Video Capture: Frame #057 (epoll) >> > Video Capture: Frame #058 (epoll) >> > Video Capture: Frame #059 (epoll) >> > >> > test MMAP (epoll, REQBUFS): OK >> > >> > Video Capture: Frame #000 >> > Video Capture: Frame #001 >> > Video Capture: Frame #002 >> > Video Capture: Frame #003 >> > Video Capture: Frame #004 >> > Video Capture: Frame #005 >> > Video Capture: Frame #006 >> > Video Capture: Frame #007 >> > Video Capture: Frame #008 >> > Video Capture: Frame #009 >> > Video Capture: Frame #010 >> > Video Capture: Frame #011 >> > Video Capture: Frame #012 >> > Video Capture: Frame #013 >> > Video Capture: Frame #014 >> > Video Capture: Frame #015 >> > Video Capture: Frame #016 >> > Video Capture: Frame #017 >> > Video Capture: Frame #018 >> > Video Capture: Frame #019 >> > Video Capture: Frame #020 >> > Video Capture: Frame #021 >> > Video Capture: Frame #022 >> > Video Capture: Frame #023 >> > Video Capture: Frame #024 >> > Video Capture: Frame #025 >> > Video Capture: Frame #026 >> > Video Capture: Frame #027 >> > Video Capture: Frame #028 >> > Video Capture: Frame #029 >> > Video Capture: Frame #030 >> > Video Capture: Frame #031 >> > Video Capture: Frame #032 >> > Video Capture: Frame #033 >> > Video Capture: Frame #034 >> > Video Capture: Frame #035 >> > Video Capture: Frame #036 >> > Video Capture: Frame #037 >> > Video Capture: Frame #038 >> > Video Capture: Frame #039 >> > Video Capture: Frame #040 >> > Video Capture: Frame #041 >> > Video Capture: Frame #042 >> > Video Capture: Frame #043 >> > Video Capture: Frame #044 >> > Video Capture: Frame #045 >> > Video Capture: Frame #046 >> > Video Capture: Frame #047 >> > Video Capture: Frame #048 >> > Video Capture: Frame #049 >> > Video Capture: Frame #050 >> > Video Capture: Frame #051 >> > Video Capture: Frame #052 >> > Video Capture: Frame #053 >> > Video Capture: Frame #054 >> > Video Capture: Frame #055 >> > Video Capture: Frame #056 >> > Video Capture: Frame #057 >> > Video Capture: Frame #058 >> > Video Capture: Frame #059 >> > >> > test MMAP (no poll, CREATE_BUFS): OK >> > >> > Video Capture: Frame #000 (select) >> > Video Capture: Frame #001 (select) >> > Video Capture: Frame #002 (select) >> > Video Capture: Frame #003 (select) >> > Video Capture: Frame #004 (select) >> > Video Capture: Frame #005 (select) >> > Video Capture: Frame #006 (select) >> > Video Capture: Frame #007 (select) >> > Video Capture: Frame #008 (select) >> > Video Capture: Frame #009 (select) >> > Video Capture: Frame #010 (select) >> > Video Capture: Frame #011 (select) >> > Video Capture: Frame #012 (select) >> > Video Capture: Frame #013 (select) >> > Video Capture: Frame #014 (select) >> > Video Capture: Frame #015 (select) >> > Video Capture: Frame #016 (select) >> > Video Capture: Frame #017 (select) >> > Video Capture: Frame #018 (select) >> > Video Capture: Frame #019 (select) >> > Video Capture: Frame #020 (select) >> > Video Capture: Frame #021 (select) >> > Video Capture: Frame #022 (select) >> > Video Capture: Frame #023 (select) >> > Video Capture: Frame #024 (select) >> > Video Capture: Frame #025 (select) >> > Video Capture: Frame #026 (select) >> > Video Capture: Frame #027 (select) >> > Video Capture: Frame #028 (select) >> > Video Capture: Frame #029 (select) >> > Video Capture: Frame #030 (select) >> > Video Capture: Frame #031 (select) >> > Video Capture: Frame #032 (select) >> > Video Capture: Frame #033 (select) >> > Video Capture: Frame #034 (select) >> > Video Capture: Frame #035 (select) >> > Video Capture: Frame #036 (select) >> > Video Capture: Frame #037 (select) >> > Video Capture: Frame #038 (select) >> > Video Capture: Frame #039 (select) >> > Video Capture: Frame #040 (select) >> > Video Capture: Frame #041 (select) >> > Video Capture: Frame #042 (select) >> > Video Capture: Frame #043 (select) >> > Video Capture: Frame #044 (select) >> > Video Capture: Frame #045 (select) >> > Video Capture: Frame #046 (select) >> > Video Capture: Frame #047 (select) >> > Video Capture: Frame #048 (select) >> > Video Capture: Frame #049 (select) >> > Video Capture: Frame #050 (select) >> > Video Capture: Frame #051 (select) >> > Video Capture: Frame #052 (select) >> > Video Capture: Frame #053 (select) >> > Video Capture: Frame #054 (select) >> > Video Capture: Frame #055 (select) >> > Video Capture: Frame #056 (select) >> > Video Capture: Frame #057 (select) >> > Video Capture: Frame #058 (select) >> > Video Capture: Frame #059 (select) >> > >> > test MMAP (select, CREATE_BUFS): OK >> > >> > Video Capture: Frame #000 (epoll) >> > Video Capture: Frame #001 (epoll) >> > Video Capture: Frame #002 (epoll) >> > Video Capture: Frame #003 (epoll) >> > Video Capture: Frame #004 (epoll) >> > Video Capture: Frame #005 (epoll) >> > Video Capture: Frame #006 (epoll) >> > Video Capture: Frame #007 (epoll) >> > Video Capture: Frame #008 (epoll) >> > Video Capture: Frame #009 (epoll) >> > Video Capture: Frame #010 (epoll) >> > Video Capture: Frame #011 (epoll) >> > Video Capture: Frame #012 (epoll) >> > Video Capture: Frame #013 (epoll) >> > Video Capture: Frame #014 (epoll) >> > Video Capture: Frame #015 (epoll) >> > Video Capture: Frame #016 (epoll) >> > Video Capture: Frame #017 (epoll) >> > Video Capture: Frame #018 (epoll) >> > Video Capture: Frame #019 (epoll) >> > Video Capture: Frame #020 (epoll) >> > Video Capture: Frame #021 (epoll) >> > Video Capture: Frame #022 (epoll) >> > Video Capture: Frame #023 (epoll) >> > Video Capture: Frame #024 (epoll) >> > Video Capture: Frame #025 (epoll) >> > Video Capture: Frame #026 (epoll) >> > Video Capture: Frame #027 (epoll) >> > Video Capture: Frame #028 (epoll) >> > Video Capture: Frame #029 (epoll) >> > Video Capture: Frame #030 (epoll) >> > Video Capture: Frame #031 (epoll) >> > Video Capture: Frame #032 (epoll) >> > Video Capture: Frame #033 (epoll) >> > Video Capture: Frame #034 (epoll) >> > Video Capture: Frame #035 (epoll) >> > Video Capture: Frame #036 (epoll) >> > Video Capture: Frame #037 (epoll) >> > Video Capture: Frame #038 (epoll) >> > Video Capture: Frame #039 (epoll) >> > Video Capture: Frame #040 (epoll) >> > Video Capture: Frame #041 (epoll) >> > Video Capture: Frame #042 (epoll) >> > Video Capture: Frame #043 (epoll) >> > Video Capture: Frame #044 (epoll) >> > Video Capture: Frame #045 (epoll) >> > Video Capture: Frame #046 (epoll) >> > Video Capture: Frame #047 (epoll) >> > Video Capture: Frame #048 (epoll) >> > Video Capture: Frame #049 (epoll) >> > Video Capture: Frame #050 (epoll) >> > Video Capture: Frame #051 (epoll) >> > Video Capture: Frame #052 (epoll) >> > Video Capture: Frame #053 (epoll) >> > Video Capture: Frame #054 (epoll) >> > Video Capture: Frame #055 (epoll) >> > Video Capture: Frame #056 (epoll) >> > Video Capture: Frame #057 (epoll) >> > Video Capture: Frame #058 (epoll) >> > Video Capture: Frame #059 (epoll) >> > >> > test MMAP (epoll, CREATE_BUFS): OK >> > >> > Video Capture: Frame #000 >> > Video Capture: Frame #001 >> > Video Capture: Frame #002 >> > Video Capture: Frame #003 >> > Video Capture: Frame #004 >> > Video Capture: Frame #005 >> > Video Capture: Frame #006 >> > Video Capture: Frame #007 >> > Video Capture: Frame #008 >> > Video Capture: Frame #009 >> > Video Capture: Frame #010 >> > Video Capture: Frame #011 >> > Video Capture: Frame #012 >> > Video Capture: Frame #013 >> > Video Capture: Frame #014 >> > Video Capture: Frame #015 >> > Video Capture: Frame #016 >> > Video Capture: Frame #017 >> > Video Capture: Frame #018 >> > Video Capture: Frame #019 >> > Video Capture: Frame #020 >> > Video Capture: Frame #021 >> > Video Capture: Frame #022 >> > Video Capture: Frame #023 >> > Video Capture: Frame #024 >> > Video Capture: Frame #025 >> > Video Capture: Frame #026 >> > Video Capture: Frame #027 >> > Video Capture: Frame #028 >> > Video Capture: Frame #029 >> > Video Capture: Frame #030 >> > Video Capture: Frame #031 >> > Video Capture: Frame #032 >> > Video Capture: Frame #033 >> > Video Capture: Frame #034 >> > Video Capture: Frame #035 >> > Video Capture: Frame #036 >> > Video Capture: Frame #037 >> > Video Capture: Frame #038 >> > Video Capture: Frame #039 >> > Video Capture: Frame #040 >> > Video Capture: Frame #041 >> > Video Capture: Frame #042 >> > Video Capture: Frame #043 >> > Video Capture: Frame #044 >> > Video Capture: Frame #045 >> > Video Capture: Frame #046 >> > Video Capture: Frame #047 >> > Video Capture: Frame #048 >> > Video Capture: Frame #049 >> > Video Capture: Frame #050 >> > Video Capture: Frame #051 >> > Video Capture: Frame #052 >> > Video Capture: Frame #053 >> > Video Capture: Frame #054 >> > Video Capture: Frame #055 >> > Video Capture: Frame #056 >> > Video Capture: Frame #057 >> > Video Capture: Frame #058 >> > Video Capture: Frame #059 >> > >> > test USERPTR (no poll): OK >> > >> > Video Capture: Frame #000 (select) >> > Video Capture: Frame #001 (select) >> > Video Capture: Frame #002 (select) >> > Video Capture: Frame #003 (select) >> > Video Capture: Frame #004 (select) >> > Video Capture: Frame #005 (select) >> > Video Capture: Frame #006 (select) >> > Video Capture: Frame #007 (select) >> > Video Capture: Frame #008 (select) >> > Video Capture: Frame #009 (select) >> > Video Capture: Frame #010 (select) >> > Video Capture: Frame #011 (select) >> > Video Capture: Frame #012 (select) >> > Video Capture: Frame #013 (select) >> > Video Capture: Frame #014 (select) >> > Video Capture: Frame #015 (select) >> > Video Capture: Frame #016 (select) >> > Video Capture: Frame #017 (select) >> > Video Capture: Frame #018 (select) >> > Video Capture: Frame #019 (select) >> > Video Capture: Frame #020 (select) >> > Video Capture: Frame #021 (select) >> > Video Capture: Frame #022 (select) >> > Video Capture: Frame #023 (select) >> > Video Capture: Frame #024 (select) >> > Video Capture: Frame #025 (select) >> > Video Capture: Frame #026 (select) >> > Video Capture: Frame #027 (select) >> > Video Capture: Frame #028 (select) >> > Video Capture: Frame #029 (select) >> > Video Capture: Frame #030 (select) >> > Video Capture: Frame #031 (select) >> > Video Capture: Frame #032 (select) >> > Video Capture: Frame #033 (select) >> > Video Capture: Frame #034 (select) >> > Video Capture: Frame #035 (select) >> > Video Capture: Frame #036 (select) >> > Video Capture: Frame #037 (select) >> > Video Capture: Frame #038 (select) >> > Video Capture: Frame #039 (select) >> > Video Capture: Frame #040 (select) >> > Video Capture: Frame #041 (select) >> > Video Capture: Frame #042 (select) >> > Video Capture: Frame #043 (select) >> > Video Capture: Frame #044 (select) >> > Video Capture: Frame #045 (select) >> > Video Capture: Frame #046 (select) >> > Video Capture: Frame #047 (select) >> > Video Capture: Frame #048 (select) >> > Video Capture: Frame #049 (select) >> > Video Capture: Frame #050 (select) >> > Video Capture: Frame #051 (select) >> > Video Capture: Frame #052 (select) >> > Video Capture: Frame #053 (select) >> > Video Capture: Frame #054 (select) >> > Video Capture: Frame #055 (select) >> > Video Capture: Frame #056 (select) >> > Video Capture: Frame #057 (select) >> > Video Capture: Frame #058 (select) >> > Video Capture: Frame #059 (select) >> > >> > test USERPTR (select): OK >> > test DMABUF: Cannot test, specify --expbuf-device >> > >> > Total for uvcvideo device /dev/video1: 58, Succeeded: 57, Failed: 1, >> > Warnings: 0 >> > >> > As tested on the guest: >> > >> > $ v4l2-compliance -d0 -s --driver-name uvcvideo >> > >> > v4l2-compliance 1.33.0-5457, 64 bits, 64-bit time_t >> > v4l2-compliance SHA: e7e240f546f3 2026-05-28 17:06:12 >> > >> > Compliance test for uvcvideo device (overridden from virtio-media) >> > /dev/video0: >> > >> > Driver Info: >> > Driver name : uvcvideo >> > Card type : Logitech Webcam C925e >> > Bus info : platform:virtio-media >> > Driver version : 7.1.0 >> > Capabilities : 0x84200001 >> > Video Capture >> > Streaming >> > Extended Pix Format >> > Device Capabilities >> > Device Caps : 0x04200001 >> > Video Capture >> > Streaming >> > Extended Pix Format >> > >> > Required ioctls: >> > test VIDIOC_QUERYCAP: OK >> > test invalid ioctls: OK >> > >> > Allow for multiple opens: >> > test second /dev/video0 open: OK >> > test VIDIOC_QUERYCAP: OK >> > test VIDIOC_G/S_PRIORITY: OK >> > test for unlimited opens: OK >> > >> > Debug ioctls: >> > test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) >> > test VIDIOC_LOG_STATUS: OK (Not Supported) >> > >> > Input ioctls: >> > test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) >> > test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >> > test VIDIOC_S_HW_FREQ_SEEK: OK >> > test VIDIOC_ENUMAUDIO: OK (Not Supported) >> > test VIDIOC_G/S/ENUMINPUT: OK >> > test VIDIOC_G/S_AUDIO: OK (Not Supported) >> > Inputs: 1 Audio Inputs: 0 Tuners: 0 >> > >> > Output ioctls: >> > test VIDIOC_G/S_MODULATOR: OK (Not Supported) >> > test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >> > test VIDIOC_ENUMAUDOUT: OK (Not Supported) >> > test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) >> > test VIDIOC_G/S_AUDOUT: OK (Not Supported) >> > Outputs: 0 Audio Outputs: 0 Modulators: 0 >> > >> > Input/Output configuration ioctls: >> > test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) >> > test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) >> > test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) >> > test VIDIOC_G/S_EDID: OK (Not Supported) >> > >> > Control ioctls (Input 0): >> > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK >> > test VIDIOC_QUERYCTRL: OK >> > test VIDIOC_G/S_CTRL: OK >> > fail: v4l2-test-controls.cpp(981): ret (got 22) >> > test VIDIOC_G/S/TRY_EXT_CTRLS: FAIL >> > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK >> > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) >> > Standard Controls: 19 Private Controls: 0 >> > >> > Format ioctls (Input 0): >> > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK >> > test VIDIOC_G/S_PARM: OK >> > test VIDIOC_G_FBUF: OK (Not Supported) >> > test VIDIOC_G_FMT: OK >> > test VIDIOC_TRY_FMT: OK >> > test VIDIOC_S_FMT: OK >> > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) >> > test Cropping: OK (Not Supported) >> > test Composing: OK (Not Supported) >> > test Scaling: OK (Not Supported) >> > >> > Codec ioctls (Input 0): >> > test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) >> > test VIDIOC_G_ENC_INDEX: OK (Not Supported) >> > test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) >> > >> > Buffer ioctls (Input 0): >> > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK >> > test CREATE_BUFS maximum buffers: OK >> > test VIDIOC_REMOVE_BUFS: OK >> > test VIDIOC_EXPBUF: OK (Not Supported) >> > test Requests: OK (Not Supported) >> > test blocking wait: OK >> > >> > Test input 0: >> > >> > Streaming ioctls: >> > test read/write: OK (Not Supported) >> > >> > Video Capture: Frame #000 >> > Video Capture: Frame #001 >> > Video Capture: Frame #002 >> > Video Capture: Frame #003 >> > Video Capture: Frame #004 >> > Video Capture: Frame #005 >> > Video Capture: Frame #006 >> > Video Capture: Frame #007 >> > Video Capture: Frame #008 >> > Video Capture: Frame #009 >> > Video Capture: Frame #010 >> > Video Capture: Frame #011 >> > Video Capture: Frame #012 >> > Video Capture: Frame #013 >> > Video Capture: Frame #014 >> > Video Capture: Frame #015 >> > Video Capture: Frame #016 >> > Video Capture: Frame #017 >> > Video Capture: Frame #018 >> > Video Capture: Frame #019 >> > Video Capture: Frame #020 >> > Video Capture: Frame #021 >> > Video Capture: Frame #022 >> > Video Capture: Frame #023 >> > Video Capture: Frame #024 >> > Video Capture: Frame #025 >> > Video Capture: Frame #026 >> > Video Capture: Frame #027 >> > Video Capture: Frame #028 >> > Video Capture: Frame #029 >> > Video Capture: Frame #030 >> > Video Capture: Frame #031 >> > Video Capture: Frame #032 >> > Video Capture: Frame #033 >> > Video Capture: Frame #034 >> > Video Capture: Frame #035 >> > Video Capture: Frame #036 >> > Video Capture: Frame #037 >> > Video Capture: Frame #038 >> > Video Capture: Frame #039 >> > Video Capture: Frame #040 >> > Video Capture: Frame #041 >> > Video Capture: Frame #042 >> > Video Capture: Frame #043 >> > Video Capture: Frame #044 >> > Video Capture: Frame #045 >> > Video Capture: Frame #046 >> > Video Capture: Frame #047 >> > Video Capture: Frame #048 >> > Video Capture: Frame #049 >> > Video Capture: Frame #050 >> > Video Capture: Frame #051 >> > Video Capture: Frame #052 >> > Video Capture: Frame #053 >> > Video Capture: Frame #054 >> > Video Capture: Frame #055 >> > Video Capture: Frame #056 >> > Video Capture: Frame #057 >> > Video Capture: Frame #058 >> > Video Capture: Frame #059 >> > >> > test MMAP (no poll, REQBUFS): OK >> > >> > Video Capture: Frame #000 (select) >> > Video Capture: Frame #001 (select) >> > Video Capture: Frame #002 (select) >> > Video Capture: Frame #003 (select) >> > Video Capture: Frame #004 (select) >> > Video Capture: Frame #005 (select) >> > Video Capture: Frame #006 (select) >> > Video Capture: Frame #007 (select) >> > Video Capture: Frame #008 (select) >> > Video Capture: Frame #009 (select) >> > Video Capture: Frame #010 (select) >> > Video Capture: Frame #011 (select) >> > Video Capture: Frame #012 (select) >> > Video Capture: Frame #013 (select) >> > Video Capture: Frame #014 (select) >> > Video Capture: Frame #015 (select) >> > Video Capture: Frame #016 (select) >> > Video Capture: Frame #017 (select) >> > Video Capture: Frame #018 (select) >> > Video Capture: Frame #019 (select) >> > Video Capture: Frame #020 (select) >> > Video Capture: Frame #021 (select) >> > Video Capture: Frame #022 (select) >> > Video Capture: Frame #023 (select) >> > Video Capture: Frame #024 (select) >> > Video Capture: Frame #025 (select) >> > Video Capture: Frame #026 (select) >> > Video Capture: Frame #027 (select) >> > Video Capture: Frame #028 (select) >> > Video Capture: Frame #029 (select) >> > Video Capture: Frame #030 (select) >> > Video Capture: Frame #031 (select) >> > Video Capture: Frame #032 (select) >> > Video Capture: Frame #033 (select) >> > Video Capture: Frame #034 (select) >> > Video Capture: Frame #035 (select) >> > Video Capture: Frame #036 (select) >> > Video Capture: Frame #037 (select) >> > Video Capture: Frame #038 (select) >> > Video Capture: Frame #039 (select) >> > Video Capture: Frame #040 (select) >> > Video Capture: Frame #041 (select) >> > Video Capture: Frame #042 (select) >> > Video Capture: Frame #043 (select) >> > Video Capture: Frame #044 (select) >> > Video Capture: Frame #045 (select) >> > Video Capture: Frame #046 (select) >> > Video Capture: Frame #047 (select) >> > Video Capture: Frame #048 (select) >> > Video Capture: Frame #049 (select) >> > Video Capture: Frame #050 (select) >> > Video Capture: Frame #051 (select) >> > Video Capture: Frame #052 (select) >> > Video Capture: Frame #053 (select) >> > Video Capture: Frame #054 (select) >> > Video Capture: Frame #055 (select) >> > Video Capture: Frame #056 (select) >> > Video Capture: Frame #057 (select) >> > Video Capture: Frame #058 (select) >> > Video Capture: Frame #059 (select) >> > >> > test MMAP (select, REQBUFS): OK >> > >> > Video Capture: Frame #000 (epoll) >> > Video Capture: Frame #001 (epoll) >> > Video Capture: Frame #002 (epoll) >> > Video Capture: Frame #003 (epoll) >> > Video Capture: Frame #004 (epoll) >> > Video Capture: Frame #005 (epoll) >> > Video Capture: Frame #006 (epoll) >> > Video Capture: Frame #007 (epoll) >> > Video Capture: Frame #008 (epoll) >> > Video Capture: Frame #009 (epoll) >> > Video Capture: Frame #010 (epoll) >> > Video Capture: Frame #011 (epoll) >> > Video Capture: Frame #012 (epoll) >> > Video Capture: Frame #013 (epoll) >> > Video Capture: Frame #014 (epoll) >> > Video Capture: Frame #015 (epoll) >> > Video Capture: Frame #016 (epoll) >> > Video Capture: Frame #017 (epoll) >> > Video Capture: Frame #018 (epoll) >> > Video Capture: Frame #019 (epoll) >> > Video Capture: Frame #020 (epoll) >> > Video Capture: Frame #021 (epoll) >> > Video Capture: Frame #022 (epoll) >> > Video Capture: Frame #023 (epoll) >> > Video Capture: Frame #024 (epoll) >> > Video Capture: Frame #025 (epoll) >> > Video Capture: Frame #026 (epoll) >> > Video Capture: Frame #027 (epoll) >> > Video Capture: Frame #028 (epoll) >> > Video Capture: Frame #029 (epoll) >> > Video Capture: Frame #030 (epoll) >> > Video Capture: Frame #031 (epoll) >> > Video Capture: Frame #032 (epoll) >> > Video Capture: Frame #033 (epoll) >> > Video Capture: Frame #034 (epoll) >> > Video Capture: Frame #035 (epoll) >> > Video Capture: Frame #036 (epoll) >> > Video Capture: Frame #037 (epoll) >> > Video Capture: Frame #038 (epoll) >> > Video Capture: Frame #039 (epoll) >> > Video Capture: Frame #040 (epoll) >> > Video Capture: Frame #041 (epoll) >> > Video Capture: Frame #042 (epoll) >> > Video Capture: Frame #043 (epoll) >> > Video Capture: Frame #044 (epoll) >> > Video Capture: Frame #045 (epoll) >> > Video Capture: Frame #046 (epoll) >> > Video Capture: Frame #047 (epoll) >> > Video Capture: Frame #048 (epoll) >> > Video Capture: Frame #049 (epoll) >> > Video Capture: Frame #050 (epoll) >> > Video Capture: Frame #051 (epoll) >> > Video Capture: Frame #052 (epoll) >> > Video Capture: Frame #053 (epoll) >> > Video Capture: Frame #054 (epoll) >> > Video Capture: Frame #055 (epoll) >> > Video Capture: Frame #056 (epoll) >> > Video Capture: Frame #057 (epoll) >> > Video Capture: Frame #058 (epoll) >> > Video Capture: Frame #059 (epoll) >> > >> > test MMAP (epoll, REQBUFS): OK >> > >> > Video Capture: Frame #000 >> > Video Capture: Frame #001 >> > Video Capture: Frame #002 >> > Video Capture: Frame #003 >> > Video Capture: Frame #004 >> > Video Capture: Frame #005 >> > Video Capture: Frame #006 >> > Video Capture: Frame #007 >> > Video Capture: Frame #008 >> > Video Capture: Frame #009 >> > Video Capture: Frame #010 >> > Video Capture: Frame #011 >> > Video Capture: Frame #012 >> > Video Capture: Frame #013 >> > Video Capture: Frame #014 >> > Video Capture: Frame #015 >> > Video Capture: Frame #016 >> > Video Capture: Frame #017 >> > Video Capture: Frame #018 >> > Video Capture: Frame #019 >> > Video Capture: Frame #020 >> > Video Capture: Frame #021 >> > Video Capture: Frame #022 >> > Video Capture: Frame #023 >> > Video Capture: Frame #024 >> > Video Capture: Frame #025 >> > Video Capture: Frame #026 >> > Video Capture: Frame #027 >> > Video Capture: Frame #028 >> > Video Capture: Frame #029 >> > Video Capture: Frame #030 >> > Video Capture: Frame #031 >> > Video Capture: Frame #032 >> > Video Capture: Frame #033 >> > Video Capture: Frame #034 >> > Video Capture: Frame #035 >> > Video Capture: Frame #036 >> > Video Capture: Frame #037 >> > Video Capture: Frame #038 >> > Video Capture: Frame #039 >> > Video Capture: Frame #040 >> > Video Capture: Frame #041 >> > Video Capture: Frame #042 >> > Video Capture: Frame #043 >> > Video Capture: Frame #044 >> > Video Capture: Frame #045 >> > Video Capture: Frame #046 >> > Video Capture: Frame #047 >> > Video Capture: Frame #048 >> > Video Capture: Frame #049 >> > Video Capture: Frame #050 >> > Video Capture: Frame #051 >> > Video Capture: Frame #052 >> > Video Capture: Frame #053 >> > Video Capture: Frame #054 >> > Video Capture: Frame #055 >> > Video Capture: Frame #056 >> > Video Capture: Frame #057 >> > Video Capture: Frame #058 >> > Video Capture: Frame #059 >> > >> > test MMAP (no poll, CREATE_BUFS): OK >> > >> > Video Capture: Frame #000 (select) >> > Video Capture: Frame #001 (select) >> > Video Capture: Frame #002 (select) >> > Video Capture: Frame #003 (select) >> > Video Capture: Frame #004 (select) >> > Video Capture: Frame #005 (select) >> > Video Capture: Frame #006 (select) >> > Video Capture: Frame #007 (select) >> > Video Capture: Frame #008 (select) >> > Video Capture: Frame #009 (select) >> > Video Capture: Frame #010 (select) >> > Video Capture: Frame #011 (select) >> > Video Capture: Frame #012 (select) >> > Video Capture: Frame #013 (select) >> > Video Capture: Frame #014 (select) >> > Video Capture: Frame #015 (select) >> > Video Capture: Frame #016 (select) >> > Video Capture: Frame #017 (select) >> > Video Capture: Frame #018 (select) >> > Video Capture: Frame #019 (select) >> > Video Capture: Frame #020 (select) >> > Video Capture: Frame #021 (select) >> > Video Capture: Frame #022 (select) >> > Video Capture: Frame #023 (select) >> > Video Capture: Frame #024 (select) >> > Video Capture: Frame #025 (select) >> > Video Capture: Frame #026 (select) >> > Video Capture: Frame #027 (select) >> > Video Capture: Frame #028 (select) >> > Video Capture: Frame #029 (select) >> > Video Capture: Frame #030 (select) >> > Video Capture: Frame #031 (select) >> > Video Capture: Frame #032 (select) >> > Video Capture: Frame #033 (select) >> > Video Capture: Frame #034 (select) >> > Video Capture: Frame #035 (select) >> > Video Capture: Frame #036 (select) >> > Video Capture: Frame #037 (select) >> > Video Capture: Frame #038 (select) >> > Video Capture: Frame #039 (select) >> > Video Capture: Frame #040 (select) >> > Video Capture: Frame #041 (select) >> > Video Capture: Frame #042 (select) >> > Video Capture: Frame #043 (select) >> > Video Capture: Frame #044 (select) >> > Video Capture: Frame #045 (select) >> > Video Capture: Frame #046 (select) >> > Video Capture: Frame #047 (select) >> > Video Capture: Frame #048 (select) >> > Video Capture: Frame #049 (select) >> > Video Capture: Frame #050 (select) >> > Video Capture: Frame #051 (select) >> > Video Capture: Frame #052 (select) >> > Video Capture: Frame #053 (select) >> > Video Capture: Frame #054 (select) >> > Video Capture: Frame #055 (select) >> > Video Capture: Frame #056 (select) >> > Video Capture: Frame #057 (select) >> > Video Capture: Frame #058 (select) >> > Video Capture: Frame #059 (select) >> > >> > test MMAP (select, CREATE_BUFS): OK >> > >> > Video Capture: Frame #000 (epoll) >> > Video Capture: Frame #001 (epoll) >> > Video Capture: Frame #002 (epoll) >> > Video Capture: Frame #003 (epoll) >> > Video Capture: Frame #004 (epoll) >> > Video Capture: Frame #005 (epoll) >> > Video Capture: Frame #006 (epoll) >> > Video Capture: Frame #007 (epoll) >> > Video Capture: Frame #008 (epoll) >> > Video Capture: Frame #009 (epoll) >> > Video Capture: Frame #010 (epoll) >> > Video Capture: Frame #011 (epoll) >> > Video Capture: Frame #012 (epoll) >> > Video Capture: Frame #013 (epoll) >> > Video Capture: Frame #014 (epoll) >> > Video Capture: Frame #015 (epoll) >> > Video Capture: Frame #016 (epoll) >> > Video Capture: Frame #017 (epoll) >> > Video Capture: Frame #018 (epoll) >> > Video Capture: Frame #019 (epoll) >> > Video Capture: Frame #020 (epoll) >> > Video Capture: Frame #021 (epoll) >> > Video Capture: Frame #022 (epoll) >> > Video Capture: Frame #023 (epoll) >> > Video Capture: Frame #024 (epoll) >> > Video Capture: Frame #025 (epoll) >> > Video Capture: Frame #026 (epoll) >> > Video Capture: Frame #027 (epoll) >> > Video Capture: Frame #028 (epoll) >> > Video Capture: Frame #029 (epoll) >> > Video Capture: Frame #030 (epoll) >> > Video Capture: Frame #031 (epoll) >> > Video Capture: Frame #032 (epoll) >> > Video Capture: Frame #033 (epoll) >> > Video Capture: Frame #034 (epoll) >> > Video Capture: Frame #035 (epoll) >> > Video Capture: Frame #036 (epoll) >> > Video Capture: Frame #037 (epoll) >> > Video Capture: Frame #038 (epoll) >> > Video Capture: Frame #039 (epoll) >> > Video Capture: Frame #040 (epoll) >> > Video Capture: Frame #041 (epoll) >> > Video Capture: Frame #042 (epoll) >> > Video Capture: Frame #043 (epoll) >> > Video Capture: Frame #044 (epoll) >> > Video Capture: Frame #045 (epoll) >> > Video Capture: Frame #046 (epoll) >> > Video Capture: Frame #047 (epoll) >> > Video Capture: Frame #048 (epoll) >> > Video Capture: Frame #049 (epoll) >> > Video Capture: Frame #050 (epoll) >> > Video Capture: Frame #051 (epoll) >> > Video Capture: Frame #052 (epoll) >> > Video Capture: Frame #053 (epoll) >> > Video Capture: Frame #054 (epoll) >> > Video Capture: Frame #055 (epoll) >> > Video Capture: Frame #056 (epoll) >> > Video Capture: Frame #057 (epoll) >> > Video Capture: Frame #058 (epoll) >> > Video Capture: Frame #059 (epoll) >> > >> > test MMAP (epoll, CREATE_BUFS): OK >> > test USERPTR (no poll): OK (Not Supported) >> > test USERPTR (select): OK (Not Supported) >> > test DMABUF (no poll): OK (Not Supported) >> > test DMABUF (select): OK (Not Supported) >> > >> > Total for uvcvideo device /dev/video0: 59, Succeeded: 58, Failed: 1, >> > Warnings: 0 >> > >> > --- >> > Changes in v5: >> > - Add DMA buffer alignment and padding for commands, responses, and the >> > event >> > buffer >> > - Corrected styling of kernel-doc comments >> > - Removed the configurable ``driver_name`` module parameter >> > - Moved the protocol to ``include/uapi/linux/virtio_media.h`` >> > - Link to v4: >> > https://lore.kernel.org/all/[email protected]/ >> > >> > Changes in v4: >> > - Rebased on top of v7.1-rc1 >> > - Replace usages of filep->private_data with file_to_v4l2_fh() >> > throughout the driver >> > - Link to v3: >> > https://lore.kernel.org/r/[email protected] >> > >> > Changes in v3: >> > - Rebased on top of v6.15-rc1 and removes obsolete control callbacks. >> > - Link to v2: >> > https://lore.kernel.org/r/[email protected] >> > >> > Changes in v2: >> > - Fixed kernel test robot and media CI warnings (ignored a few false >> > positives). >> > - Changed in-driver email address to personal one since my Google one >> > will soon become invalid. >> > - Link to v1: >> > https://lore.kernel.org/r/[email protected] >> > >> > Brian Daniels (5): >> > media: virtio: Add skeleton virtio-media driver >> > media: virtio: Add session management >> > media: virtio: Add scatterlist builder >> > media: virtio: Add ioctl operations and driver logic >> > media: virtio: Add USERPTR memory type support >> > >> > MAINTAINERS | 8 + >> > drivers/media/Kconfig | 13 + >> > drivers/media/Makefile | 2 + >> > drivers/media/virtio/Makefile | 7 + >> > drivers/media/virtio/scatterlist_builder.c | 579 +++++++++ >> > drivers/media/virtio/scatterlist_builder.h | 112 ++ >> > drivers/media/virtio/session.h | 132 ++ >> > drivers/media/virtio/virtio_media.h | 97 ++ >> > drivers/media/virtio/virtio_media_driver.c | 951 ++++++++++++++ >> > drivers/media/virtio/virtio_media_ioctls.c | 1326 ++++++++++++++++++++ >> > include/uapi/linux/virtio_media.h | 287 +++++ >> > 11 files changed, 3514 insertions(+) >> > create mode 100644 drivers/media/virtio/Makefile >> > create mode 100644 drivers/media/virtio/scatterlist_builder.c >> > create mode 100644 drivers/media/virtio/scatterlist_builder.h >> > create mode 100644 drivers/media/virtio/session.h >> > create mode 100644 drivers/media/virtio/virtio_media.h >> > create mode 100644 drivers/media/virtio/virtio_media_driver.c >> > create mode 100644 drivers/media/virtio/virtio_media_ioctls.c >> > create mode 100644 include/uapi/linux/virtio_media.h >> > >> > >> > base-commit: 06cb687a5132fcffe624c0070576ab852ac6b568 >> > -- >> > 2.55.0.229.g6434b31f56-goog >> > >>

