首页 > *nix技术, 虚拟技术 > Ubuntu 20.04上测试vfio-mediated-device(mtty)

Ubuntu 20.04上测试vfio-mediated-device(mtty)

2022年2月1日 发表评论 阅读评论 1,487 次浏览

参考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/3024http://lenky.info/?p=3024


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
您必须在 登录 后才能发布评论.