我在尝试使用IVSHMEM时遇到了一个问题。下面是我这边的配置:
- IVSHMEM设备的vm xml配置:
<shmem name='ivshmem'>
<model type='ivshmem-plain'/>
<size unit='M'>2</size>
<address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
</shmem>
启动后,我发现qemu命令行明显有设备选项:
ps aux | grep ivshmem
/usr/bin/qemu-system-x86_64……(忽略其他选项)-object memory-backend-file,id=shmmem-shmem0, memm -path=/dev/shm/hostmem,size=4194304,share=yes -device ivshmem-plain,id=shmem0,memdev=shmmem-shmem0,bus=pcie.0,addr=0x10
lspci命令未显示设备。
lshw命令确实显示设备:
*-memory UNCLAIMED
description: RAM memory
product: Inter-VM shared memory
vendor: Red Hat, Inc.
physical id: 10
bus info: pci@0000:00:10.0
version: 01
width: 64 bits
clock: 33MHz (30.3ns)
configuration: latency=0
resources: memory:fcc1c000-fcc1c0ff memory:fdc00000-fdffffff
我的主机操作系统和虚拟机操作系统是ubuntu 20.04和版本是:
uname -a
5.8.0-43-generic #49~20.04.1-Ubuntu SMP星期五Feb 5 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
这个有什么输入吗?
首先需要加载通用驱动程序:
modprobe uio_pci_generic
然后您将看到PCI设备。
然后你可以使用 来加载你自己的内核模块insmod uio_ivshmem.ko
请注意,您可能需要先构建模块。