Ubuntu 20.04上测试vfio-mediated-device(mtty)
参考https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/driver-api/vfio-mediated-device.rst,在Ubuntu 20.04上实验下vfio-mediated-device(mtty)。
1,环境
$ uname -a
Linux lenky-HP 5.10.0-1057-oem #61-Ubuntu SMP Thu Jan 13 15:06:11 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/issue
Ubuntu 20.04.2 LTS \n \l
2,准备测试代码
根据环境显示,下载5.10版本的mtty测试代码到本地:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/plain/samples/vfio-mdev/mtty.c?h=v5.10
$ pwd /data/lenky $ ls vfio-mdev-mtty/mtty.c
在同一目录vfio-mdev-mtty下准备Makefile,如下:
$ cat vfio-mdev-mtty/Makefile obj-m:=mtty.o KERNELBUILD :=/lib/modules/$(shell uname -r)/build default: make -C $(KERNELBUILD) M=$(shell pwd) modules echo insmod ./mtty.ko to turn it on clean: rm -rf *.o *.ko *.mod.c .*.cmd *.markers *.order *.symvers .tmp_versions
make编译,生成ko文件,并加载:
$ cd vfio-mdev-mtty/ $ make y$ sudo insmod mtty.ko $ lsmod | grep mtty mtty 24576 0 mdev 28672 2 vfio_mdev,mtty $ ls /sys/devices/virtual/mtty/mtty/ mdev_supported_types mtty_dev power subsystem uevent
创建一个mediated device:
$ uuid b1c6b7d6-8305-11ec-9e57-3b10f7a7b608 $ sudo sh -c 'echo "b1c6b7d6-8305-11ec-9e57-3b10f7a7b608" > "/sys/devices/virtual/mtty/mtty/mdev_supported_types/mtty-2/create"'
添加到虚拟机:
$ virsh edit ubuntu20.04
其中ubuntu20.04是在虚拟系统管理器里看到的虚拟机名称,在编辑器里的
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='off'> <source> <address uuid='b1c6b7d6-8305-11ec-9e57-3b10f7a7b608'/> </source> </hostdev>
只需对应的修改uuid后面的值即可。
保存后,再执行virsh edit ubuntu20.04打开会自动在hostdev里增加一行:
<address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'>
表示该mdev设备在ubuntu20.04虚拟机里的pci总线位置为0x06。
运行虚拟机后,在虚拟机里可以看到如下信息:
$ lspci | grep 06 06:00.0 Serial controller: WCH.CN CH352 PCI Dual Serial Port Controller (rev 10) $ dmesg | grep 06:00.0 ... [ 1.231102] 0000:06:00.0: ttyS4 at I/O 0xc000 (irq = 22, base_baud = 115200) is a 16550A [ 1.231303] 0000:06:00.0: ttyS5 at I/O 0xc008 (irq = 22, base_baud = 115200) is a 16550A
表示设置的mdev设备在虚拟机里正常运行识别了。
在虚拟机里用minicom操作ttyS4,输入啥,然后??待看看源码后再测。
$ sudo minicom -s $ sudo minicom
参考:
https://wiki.archlinux.org/title/Intel_GVT-g
转载请保留地址:http://www.lenky.info/archives/2022/02/3024 或 http://lenky.info/?p=3024
备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来信讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。
法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。