Re: [PATCH v3] media: add virtio-media driver
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date: 2025-06-17 10:20:40
Also in:
linux-media, lkml
Em Tue, 17 Jun 2025 11:03:18 +0200 Mauro Carvalho Chehab [off-list ref] escreveu:
Em Tue, 17 Jun 2025 10:49:38 +0200 Mauro Carvalho Chehab [off-list ref] escreveu:quoted
Hi Alex, Em Tue, 27 May 2025 23:03:39 +0900 Alexandre Courbot [off-list ref] escreveu:quoted
quoted
quoted
quoted
Btw, I was looking at: https://github.com/chromeos/virtio-media (I'm assuming that this is the QEMU counterpart, right?)crosvm actually, but QEMU support is also being worked on.Do you have already QEMU patches? The best is to have the Kernel driver submitted altogether with QEMU, as Kernel developers need it to do the tests. In my case, I never use crosvm, and I don't have any Chromebook anymore.IIRC Albert Esteve was working on this, maybe he can share the current status.Any news regards to it?quoted
Note that crosvm does not require a Chromebook, you can build and run it pretty easily on a regular PC. I have put together a document to help with that: https://github.com/chromeos/virtio-media/blob/main/TRY_IT_OUT.mdI started looking on it today. Already installed crossvm (I had to install libcap-devel to build it). Still, I'm not familiar with crossvm, which is a little be painful. In particular, how can I enable network on it and speedup it? With suggested parameters, it picked only one CPU, and very few memory on it: # cat /proc/cpuinfo|grep processor processor : 0 # free total used free shared buff/cache available Mem: 221876 34780 139712 272 56096 187096 Swap: 0 0 0 I'd like to be able to compile things on it and use ssh/scp. So, the VM needs more CPUs, more memory, more network and GPU.
Found how to setup cpus and memory, but didn't find a way to setup network without running it as root. The gpu parameter has several options. Not sure what backend works well for media apps like qv4l2, camorama, X11, ...
quoted
Btw, on a quick test with v4l2-compliance, something looks weird: I started a camera application at the host. Still, v4l2-compliance said successfully excecuted mmap: Streaming ioctls: test read/write: OK (Not Supported) test blocking wait: OK test MMAP (no poll): OK test MMAP (select): OK Vide[2025-06-17T08:44:49.177972817+00:00 ERROR virtio_media::ioctl] VIDIOC_REQBUFS: memory type DmaBuf is currently unsupported [2025-06-17T08:44:49.178164554+00:00 ERROR virtio_media::ioctl] VIDIOC_REQBUFS: memory type DmaBuf is currently unsupported o Capturtest MMAP (epoll): 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) Which doesn't make any sense, as the host OS should not allow access to mmap while streaming.Ah, this was with the "simple" device, not with the proxy one. With the proxy one, I'm getting: # v4l2-ctl --all Driver Info: Driver name : virtio-media Card type : usb video: usb video Bus info : platform:virtio-media Driver version : 6.15.0 Capabilities : 0x84200001 Video Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format Priority: 2 Video input : 0 (Camera 1: ok) Format Video Capture: Width/Height : 1280/720 Pixel Format : 'MJPG' (Motion-JPEG) Field : None Bytes per Line : 0 Size Image : 1843200 Colorspace : sRGB Transfer Function : Rec. 709 YCbCr/HSV Encoding: ITU-R 601 Quantization : Default (maps to Full Range) Flags : Crop Capability Video Capture: Bounds : Left 0, Top 0, Width 1280, Height 720 Default : Left 0, Top 0, Width 1280, Height 720 Pixel Aspect: 1/1 Selection Video Capture: crop_default, Left 0, Top 0, Width 1280, Height 720, Flags: Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1280, Height 720, Flags: Streaming Parameters Video Capture: Capabilities : timeperframe Frames per second: 30.000 (30/1) Read buffers : 0 User Controls brightness 0x00980900 (int) : min=-128 max=127 step=1 default=-11 value=-11 contrast 0x00980901 (int) : min=0 max=255 step=1 default=148 value=148 saturation 0x00980902 (int) : min=0 max=255 step=1 default=180 value=180 hue 0x00980903 (int) : min=-128 max=127 step=1 default=0 value=0 # v4l2-compliance -d0 -s Streaming ioctls: test read/write: OK (Not Supported) test blocking wait: OK fail: v4l2-test-buffers.cpp(1345): node->streamon(q.g_type()) != EINVAL test MMAP (no poll): FAIL fail: v4l2-test-buffers.cpp(1345): node->streamon(q.g_type()) != EINVAL test MMAP (select): FAIL fail: v4l2-test-buffers.cpp(1345): node->streamon(q.g_type()) != EINVAL test MMAP (epoll): FAIL test USERPTR (no poll): OK (Not Supported) test USERPTR (select): OK (Not Supported) [2025-06-17T08:55:20.768760714+00:00 ERROR virtio_media::ioctl] VIDIOC_REQBUFS: memory type DmaBuf is currently unsupported test DMABUF (no poll): OK (Not Supported) [2025-06-17T08:55:20.769745707+00:00 ERROR virtio_media::ioctl] VIDIOC_REQBUFS: memory type DmaBuf is currently unsupported test DMABUF (select): OK (Not Supported) At the host, I'm getting: Streaming ioctls: test read/write: OK (Not Supported) test blocking wait: OK fail: ../utils/v4l2-compliance/v4l2-test-buffers.cpp(1346): node->streamon(q.g_type()) != EINVAL test MMAP (no poll): FAIL fail: ../utils/v4l2-compliance/v4l2-test-buffers.cpp(1346): node->streamon(q.g_type()) != EINVAL test MMAP (select): FAIL fail: ../utils/v4l2-compliance/v4l2-test-buffers.cpp(1346): node->streamon(q.g_type()) != EINVAL test MMAP (epoll): FAIL test USERPTR (no poll): OK test USERPTR (select): OK test DMABUF: Cannot test, specify --expbuf-device The device I'm using for test is a UVC HDMI capture board: Bus 005 Device 008: ID 534d:2109 MacroSilicon usb video Thanks, Mauro
Thanks, Mauro