首页 > 解决方案 > 命令“lspci”不显示 IVSHMEM 设备

问题描述

我在尝试使用 IVSHMEM 时遇到了问题。以下是我这边的配置:

  1. 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>
  1. 启动后,我发现 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

  1. lspci 命令未显示设备。

  2. 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

对此有什么意见吗?

标签: virtualizationqemukvmlibvirtpci-e

解决方案


您首先需要加载通用驱动程序:

modprobe uio_pci_generic

然后您将看到 PCI 设备。

之后,您可以使用加载自己的内核模块

insmod uio_ivshmem.ko

请注意,您可能需要先构建模块。


推荐阅读