
Ich versuche, auf einen PCI-WLAN-Adapter auf einem QEMU zuzugreifen und eine vexpress-a9-Karte zu simulieren.
Ich verfolgeDasTutorial, das eine Passthrough-PCI-Karte des Hostcomputers mit einem Gastcomputer teilt, der auf qemu-kvm läuft. Aber ich denke, es ist nicht auf qemu-system-arm anwendbar.
- Ist es möglich, PCI mit qemu-system-arm für vexpress-a9 durchzureichen?
- Gibt es eine Möglichkeit, auf eine PCI-Karte als USB-Gerät im Gastbetriebssystem zuzugreifen? Oder als Host-USB-Gerät im Gastbetriebssystem?
Folgendes mache ich:
$ 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
Antwort1
Stellen Sie sicher, dass Sie die in diesem Abschnitt beschriebenen Schritte durchführen.13.3.4. PCI-Pass-Through, der Dokumente mit dem Titel:Kapitel 13. Ausführen virtueller Maschinen mit qemu-kvm.
Auszug
Prozedur 13.1. Konfigurieren von PCI Pass-Through
Stellen Sie sicher, dass CONFIG_DMAR_DEFAULT_ON im laufenden Kernel des Hosts festgelegt ist:
$ grep CONFIG_DMAR_DEFAULT_ON /boot/config-`uname -r`
Wenn diese Option nicht festgelegt ist, bearbeiten Sie die Konfiguration Ihres Bootloaders und fügen Sie intel_iommu=on (Intel-Rechner) oder iommu=pt iommu=1 (AMD-Rechner) hinzu. Starten Sie dann den Host-Rechner neu.
Überprüfen Sie, ob IOMMU aktiv aktiviert und auf dem Host erkannt ist. Führen Sie dmesg | grep -e DMAR -e IOMMU auf Intel-Rechnern oder dmesg | grep AMD-Vi auf AMD-Rechnern aus. Wenn Sie keine Ausgabe erhalten, überprüfen Sie sorgfältig, ob Ihre Hardware IOMMU (VT-d) unterstützt, und prüfen Sie, ob es im BIOS aktiviert wurde.
Identifizieren Sie das Host-PCI-Gerät, das dem Gast zugewiesen werden soll.
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.
Trennen Sie das Gerät vom Host-Kerneltreiber und binden Sie es an den PCI-Stub-Treiber.
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
Führen Sie jetzt den VM-Gast mit dem zugewiesenen PCI-Gerät aus.
qemu-kvm [...] -device pci-assign,host=00:1b.0
QEMU/KVM ARM-Unterstützung
Laut Änderungsprotokoll für Version 1.5 und 1.6 wird ARM auf folgende Weise unterstützt:
1.5
- Diese Version bietet anfängliche Unterstützung von KVM für die ARM-Architektur. Dies erfordert einen Linux-Kernel 3.9 oder besser und eine Cortex-A15-CPU.
- Die Zynq-Platine bietet eine SD-Host-Controller-Schnittstelle.
- Das PCI-Controllermodell für VersatilePB- und Realview-Boards wurde in seiner Funktionalität deutlich verbessert (einschließlich MMIO BAR-Unterstützung und einer korrekten PCI IRQ-Zuordnung). Beachten Sie, dass Linux-Kernel dies derzeit nicht nutzen. Wir erkennen jedoch automatisch Kernel, die das Verhalten eines alten, defekten QEMU erwarten, und greifen darauf zurück. (Das alte IRQ-Verhalten kann mit „-global versatile_pci.broken-irq-mapping=1“ erzwungen werden, falls unbedingt erforderlich.)
- Die falsche Handhabung des SRS-Befehls im Thumb-Modus wurde behoben.
- Die Leistung der TCG-Emulation von ARM-Zielen wurde im Vergleich zu früheren Versionen verbessert.
- Migration und VM-Speichern/Laden funktionieren jetzt auf den Modellen vexpress-a15 und vexpress-a9 ordnungsgemäß.
1.6
- Die 32-Bit-ARMv8-LDA/STL-Anweisungen für Load-Acquire/Store-Release werden unterstützt (nur mit -cpu any); die restlichen neuen v8-Anweisungen folgen in einer zukünftigen Version.
- Die Karten vexpress-a9 und vexpress-a15 bieten experimentelle Unterstützung für Virtio-Geräte über einen Virtio-mmio-Transport. Beachten Sie, dass die Virtio-Befehlszeilen, die mit x86-Systemen verwendet werden, nicht funktionieren, da sie PCI-Virtio-Geräte erstellen. Verwenden Sie stattdessen die Geräte „virtio-blk-device“, „virtio-net-device“ usw. Beachten Sie, dass sich diese Funktionalität in zukünftigen Versionen ändern kann.
- Die Option -initrd akzeptiert jetzt Ramdisks mit einem U-Boot-Header.
- Ein Modell des Calxeda ECX-2000/Midway-Systems wird jetzt unterstützt („Midway“).