Thread (31 messages) 31 messages, 6 authors, 2d ago

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.md    
I 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help