
我正在嘗試存取 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”)。