lim*_*ala 1 linux pci virtual-machine qemu
我正在尝试访问 QEMU 上的 PCI WiFi 适配器,模拟 vexpress-a9 板。
我正在关注本教程,该教程将主机的直通 PCI 卡共享给在 qemu-kvm 上运行的来宾机器。但我认为它不适用于 qemu-system-arm。
这是我在做什么:
$ qemu-system-arm \
-kernel ./zImage \
-M vexpress-a9 \
-cpu cortex-a9 \
-m 1024 \
-smp 2 \
-serial stdio \
-append "root=/dev/mmcblk0p1 rootfstype=ext4 rw raid=noautodetect console=ttyAMA0,38400n8 rootwait devtmpfs.mount=0 vmalloc=256MB mem=1024M" \
-sd ./vexpress-quantal.img
Run Code Online (Sandbox Code Playgroud)
确保您完成了本节13.3.4 中概述的步骤。文档中的PCI Pass-Through,标题为:第 13 章。使用 qemu-kvm 运行虚拟机。
摘抄
程序 13.1。配置 PCI 直通
确保在主机的运行内核中设置了 CONFIG_DMAR_DEFAULT_ON:
$ grep CONFIG_DMAR_DEFAULT_ON /boot/config-`uname -r`
Run Code Online (Sandbox Code Playgroud)
如果未设置此选项,请编辑引导加载程序配置并添加 intel_iommu=on(Intel 机器)或 iommu=pt iommu=1(AMD 机器)。然后重启主机。
检查 IOMMU 是否已在主机上主动启用和识别。运行 dmesg | 英特尔机器上的 grep -e DMAR -e IOMMU 或 dmesg | grep AMD-Vi 在 AMD 机器上。如果没有输出,请仔细检查您的硬件是否支持 IOMMU (VT-d) 并检查它是否已在 BIOS 中启用。
标识要分配给来宾的主机 PCI 设备。
tux@vmhost:~> lspci -nn
[...] 00:1b.0 Audio device [0403]: Intel Corporation 82801H (ICH8 Family) \
HD Audio Controller [8086:284b] (rev 02) [...]
Note down the device (00:1b.0) and vendor (8086:284b) ID.
Run Code Online (Sandbox Code Playgroud)从主机内核驱动程序解除设备绑定并将其绑定到 PCI 存根驱动程序。
tux@vmhost:~> modprobe pci_stub
tux@vmhost:~> echo "8086 284b" > /sys/bus/pci/drivers/pci-stub/new_id
tux@vmhost:~> echo "0000:00:1b.0" > /sys/bus/pci/devices/0000:00:1b.0/driver/unbind
tux@vmhost:~> echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/bind
Run Code Online (Sandbox Code Playgroud)现在运行分配了 PCI 设备的 VM 来宾。
qemu-kvm [...] -device pci-assign,host=00:1b.0
Run Code Online (Sandbox Code Playgroud)根据 1.5 和 1.6 版的变更日志,ARM 支持以下方式:
1.5
1.6
| 归档时间: |
|
| 查看次数: |
8268 次 |
| 最近记录: |