确保您完成了文档的本节( 13.3.4.PCI通 )中概述的步骤,标题为:第13章.使用qemu运行虚拟机。
节选
程序13.1.配置PCI通过
- 确保在主机的运行内核中设置了CONFIG_DMAR_DEFAULT_ON:$ grep CONFIG_DMAR_DEFAULT_ON /CONFIG_DMAR_DEFAULT_ON/config-
uname -r
(如果没有设置此选项),编辑引导加载程序配置并添加intel_iommu=on (英特尔机器)或iommu=pt iommu=1 (iommu=pt iommu=1)。然后重新启动主机。 - 检查主机上是否已激活和识别IOMMU。在英特尔机器上运行dmesg \ grep -e -e -e IOMMU,或在AMD机器上运行dmesg _ grep AMD-Vi。如果没有输出,请仔细检查硬件是否支持IOMMU (VT),并检查BIOS中是否启用了它。
- 标识要分配给来宾的主机PCI设备。tux@vmhost:~> lspci -nn ... 00:1b.0音频设备0403:Intel公司8280 1H (ICH8系列)\ HD音频控制器8086:284 b ...记下设备(00:1b.0)和供应商(8086:284 b) ID。
- 从主机内核驱动程序中解除设备绑定,并将其绑定到PCI存根驱动程序。/sys/bus/pci/devices/0000:00:1b.0/driver/unbind pci_stub tux@vmhost:~>回波"8086 284 b“>/sys/bus/pci/ tux@vmhost:~> /pci-stub/新id tux@vmhost:~>回波"0000:00:1b.0”>pci_stub tux@vmhost:~> echo "0000:00:1b.0“>/sys/bus/pci/tux@vmhost:~>/pci-stub/绑定
- 现在运行VM并分配PCI设备。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支持和正确的PCI映射)。请注意,Linux内核目前没有利用这一点;但是,我们自动检测希望出现一个旧的、坏掉的QEMU行为的内核,然后返回到它。(如果绝对有必要的话,可以使用"-global mapping_pci.rupt-irq- can =1“强制使用旧的IRQ行为。)
- 已修正了拇指模式下SRS指令的错误处理。
- 与以前的版本相比,ARM目标的TCG仿真性能得到了提高。
- 迁移和vm保存/加载现在正确地工作在vexpress-a15和vexpress-a9模型上。
1.6
- 支持用于负载获取/存储发布的32位ARMv8 LDA/STL指令(仅适用于-cpu any);新的v8指令的其余部分将在未来的版本中遵循。
- vexpress-a9和vexpress-a15板通过virtio传输为virtio设备提供实验支持。请注意,与x86系统一起使用的virtio命令行将无法工作,因为它们将创建PCI virtio设备;而是使用“virtio-blk-设备”、“virtio设备”等设备。请注意,此功能可能在以后的版本中发生更改。
- -initrd选项现在接受带有的ramdisks。
- 现在支持Calxeda ECX-2000 / Midway系统的模型(“中途”)。