qemu-thunderbolt
Ein QEMU-Branch, der eine PCIe-Hotplug-Schicht im Thunderbolt-Stil hinzufügt. Geräte dahinter bleiben gewöhnliche PCI-Geräte von QEMU; die Schicht steuert, ob der Gast sie als verbunden sieht, und sendet die Hotplug-Benachrichtigungen.
- QEMU
- Thunderbolt
- PCIe
- macOS
- Status
- Experimentell: fünf Commits auf QEMU master vom Juli 2026, im Branch
tb-bus. Validiert mit macOS-Gästen: Erkennen und Entfernen der Anzeige, Hotplug und Unplug von NVMe, Einhängen, Schreiben, Auswerfen und erneutes Anstecken von USB-Speicher mit intakten Daten. - Lizenz
- GPL-2.0-or-later, wie QEMU;
thunderbolt-vga.cbehält die MIT-Lizenz des stdvga-Codes, von dem es abgeleitet ist. - Plattformen
- QEMU
qemu-system-x86_64mit der q35-Maschine; macOS-Gäste.
Welches Problem es löst
Manche Gäste können für ein Gerät kein direktes PCIe-Hotplug nutzen. Hauptziel der Validierung ist macOS: Es sieht das Gerät über eine für den Gast sichtbare Thunderbolt-Schicht, auch wenn direktes PCIe-Hotplug desselben Endpunkts nicht nutzbar ist. So lassen sich echte und virtuelle Geräte zu einem laufenden Gast hinzufügen und wieder entfernen.
Wichtigste Funktionen
thunderbolt-root-port: ein PCIe-Root-Port mit eigenemthunderbolt-bus; seine Eigenschaftconnectedtrennt den ganzen Port und verbindet ihn wieder.thunderbolt-pcie-pci-bridge: eine PCIe-zu-PCI-Brücke für getunnelte PCI-Endpunkte, mit Thunderbolt-bezogenen ACPI-Eigenschaften.thunderbolt-vga: eine hotplugfähige, stdvga-kompatible Anzeige; das reguläre GerätVGAbleibt unverändert und nicht hotplugfähig.- Beispiele für eine Anzeige, USB-Speicher hinter einem xHCI-Controller und ein NVMe-Laufwerk, alles über den QEMU-Monitor.
- Ein qtest für das Hotplug der Anzeige und Dokumentation in
docs/specs.
So funktioniert es
Der Gast startet auf einer q35-Maschine mit seiner normalen Boot-Anzeige und einem leeren thunderbolt-root-port. Im QEMU-Monitor setzt device_add einen Endpunkt auf den Bus des Ports, device_del entfernt ihn; qom-set … connected false und true trennen den ganzen Port und stecken ihn wieder an. Der Root-Port liefert die ACPI-Beschreibung und die PCIe-Hotplug-Signale, die der Gast sieht; die Gerätemodelle der Endpunkte werden nicht geändert.
(qemu) device_add thunderbolt-vga,id=tbvga0,bus=tbrp0,addr=0x00 (qemu) device_del tbvga0 (qemu) qom-set /machine/peripheral/tbrp0 connected false
Voraussetzungen
- QEMU, gebaut aus dem Branch
tb-busdes Repositorys. - Der Maschinentyp q35; die Beispiele verwenden
qemu-system-x86_64. - Die Boot-Anzeige bleibt ein reguläres
VGA; eine Thunderbolt-Anzeige wird nach dem Booten hinzugefügt.
Diese Seite fasst README und Dokumentation des Repositorys mit Stand Oktober 2026 zusammen. Maßgeblich ist das Repository selbst.