virtualization - 命令“lspci”不显示 IVSHMEM 设备
问题描述
我在尝试使用 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 命令行 ideedly 具有设备选项:
ps辅助| grep ivshmem
/usr/bin/qemu-system-x86_64 .......(忽略其他选项)-object memory-backend-file,id=shmmem-shmem0,mem-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
我的主机 os 和 gust vm os 是 ubuntu 20.04,版本是:
uname -a
5.8.0-43-generic #49~20.04.1-Ubuntu SMP Fri Feb 5 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
对此有什么意见吗?
解决方案
您首先需要加载通用驱动程序:
modprobe uio_pci_generic
然后您将看到 PCI 设备。
之后,您可以使用加载自己的内核模块
insmod uio_ivshmem.ko
请注意,您可能需要先构建模块。
推荐阅读
- node.js - 如何使用 zeit/pkg 正确打包我的 express 应用程序资产和脚本
- r - How to draw Polygon for lots of lat/long coordinates and calculate surface are?
- regex - 从正则表达式匹配中删除最后一个字符
- gradle - JAXBException: class ... 此上下文不知道它的任何超类
- python - 从字典列表中的字典中删除键
- jenkins - 使用 Kubernetes 和 Jenkins 在持续交付中实现手动审批
- python - 预期的
, 但发现 google-ads.yaml 文件错误 Python 3 - c - 无法解析标头中定义的 Eclipse C 常量
- jmeter - 我想知道我的服务器每秒可以处理多少个请求?
- hadoop - winutils和HBase是什么关系?