我正在尝试访问 QEMU 上的 PCI WiFi 适配器,模拟 vexpress-a9 板。
我关注的是这教程将主机的直通 PCI 卡共享给运行在 qemu-kvm 上的客户机。但我认为它不适用于 qemu-system-arm。
- vexpress-a9 是否可以使用 qemu-system-arm 直通 PCI?
- 有没有办法在来宾操作系统中将 PCI 卡作为 USB 设备进行访问?或者来宾操作系统中的主机 USB 设备?
这就是我正在做的:
$ 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
答案1
确保您完成本节中概述的步骤,13.3.4。 PCI 直通,文档中,标题为:第 13 章使用 qemu-kvm 运行虚拟机。
摘抄
程序 13.1。配置 PCI 直通
确保在主机运行的内核中设置了 CONFIG_DMAR_DEFAULT_ON:
$ grep CONFIG_DMAR_DEFAULT_ON /boot/config-`uname -r`
如果未设置此选项,请编辑引导加载程序配置并添加 intel_iommu=on (Intel 计算机)或 iommu=pt iommu=1 (AMD 计算机)。然后重新启动主机。
检查主机上是否已主动启用并识别 IOMMU。运行 dmesg | Intel 机器上的 grep -e DMAR -e IOMMU,或 dmesg |在 AMD 机器上 grep AMD-Vi。如果没有输出,请仔细检查您的硬件是否支持 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.
解除设备与主机内核驱动程序的绑定,并将其绑定到 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
现在运行分配了 PCI 设备的 VM Guest。
qemu-kvm [...] -device pci-assign,host=00:1b.0
QEMU/KVM ARM 支持
根据版本 1.5 和 1.6 的变更日志,ARM 通过以下方式受到支持:
1.5
- 此版本初步支持 ARM 架构的 KVM。这需要 3.9 或更好的 Linux 内核和 Cortex-A15 CPU。
- Zynq 板提供 SD 主机控制器接口。
- VersatilePB 和 Realview 板卡的 PCI 控制器模型在功能上得到了显着改进(包括 MMIO BAR 支持和正确的 PCI IRQ 映射)。请注意,Linux 内核目前还没有利用这一点;然而,我们会自动检测那些期望旧的损坏的 QEMU 行为的内核,并回退到该行为。 (如果绝对必要,可以使用“-globalVersatile_pci.broken-irq-mapping=1”强制旧的IRQ行为。)
- Thumb 模式下 SRS 指令的错误处理已得到修复。
- ARM 目标的 TCG 仿真性能比以前的版本有所改进。
- 迁移和虚拟机保存/加载现在可以在 vexpress-a15 和 vexpress-a9 型号上正常工作。
1.6
- 支持用于加载-获取/存储-释放的 32 位 ARMv8 LDA/STL 指令(仅与 -cpu any 一起使用);新 v8 指令的其余部分将在未来版本中遵循。
- vexpress-a9 和 vexpress-a15 板通过 virtio-mmio 传输对 virtio 设备提供实验性支持。请注意,与 x86 系统一起使用的 virtio 命令行将无法工作,因为它们将创建 PCI virtio 设备;使用设备“virtio-blk-device”、“virtio-net-device”等代替。请注意,此功能在未来版本中可能会发生变化。
- -initrd 选项现在接受带有 U-Boot 标头的 ramdisk。
- 现在支持 Calxeda ECX-2000 / Midway 系统模型(“midway”)。