qemu-thunderbolt
Une branche de QEMU qui ajoute une couche de branchement à chaud PCIe de type Thunderbolt. Les périphériques derrière elle restent des périphériques PCI QEMU ordinaires ; la couche contrôle si l’invité les voit connectés et envoie les notifications de branchement à chaud.
- QEMU
- Thunderbolt
- PCIe
- macOS
- Statut
- Expérimental : cinq commits au-dessus du master de QEMU de juillet 2026, dans la branche
tb-bus. Validé avec des invités macOS : détection et retrait de l’affichage, branchement et débranchement à chaud de NVMe, montage, écriture, éjection et rebranchement d’un stockage USB avec des données intactes. - Licence
- GPL-2.0-or-later, comme QEMU ;
thunderbolt-vga.cconserve la licence MIT du code stdvga dont il dérive. - Plateformes
- QEMU
qemu-system-x86_64avec la machine q35 ; invités macOS.
Le problème résolu
Certains invités ne peuvent pas utiliser le branchement à chaud PCIe direct pour un périphérique. macOS est la principale cible de validation : il voit le périphérique à travers une couche Thunderbolt visible par l’invité, même lorsque le branchement à chaud PCIe direct du même périphérique n’est pas utilisable. Des périphériques réels et virtuels peuvent alors être ajoutés à un invité en cours d’exécution et en être retirés.
Fonctionnalités principales
thunderbolt-root-port: un port racine PCIe avec son proprethunderbolt-bus; sa propriétéconnecteddéconnecte et reconnecte le port entier.thunderbolt-pcie-pci-bridge: un pont PCIe vers PCI pour les périphériques PCI tunnelisés, avec des propriétés ACPI liées à Thunderbolt.thunderbolt-vga: un affichage compatible stdvga et branchable à chaud ; le périphériqueVGAhabituel n’est pas modifié et reste non branchable à chaud.- Des exemples pour un affichage, un stockage USB derrière un contrôleur xHCI et un disque NVMe, le tout depuis le moniteur QEMU.
- Un qtest pour le branchement à chaud de l’affichage et une documentation dans
docs/specs.
Fonctionnement
L’invité démarre sur une machine q35 avec son affichage de démarrage habituel et un thunderbolt-root-port vide. Dans le moniteur QEMU, device_add place un périphérique sur le bus du port et device_del le retire ; qom-set … connected false et true débranchent et rebranchent le port entier. Le port racine fournit la description ACPI et la signalisation de branchement à chaud PCIe que voit l’invité ; les modèles des périphériques eux-mêmes ne sont pas modifiés.
(qemu) device_add thunderbolt-vga,id=tbvga0,bus=tbrp0,addr=0x00 (qemu) device_del tbvga0 (qemu) qom-set /machine/peripheral/tbrp0 connected false
Prérequis
- QEMU compilé depuis la branche
tb-busdu dépôt. - Le type de machine q35 ; les exemples utilisent
qemu-system-x86_64. - L’affichage de démarrage reste un
VGAhabituel ; un affichage Thunderbolt est ajouté après le démarrage.
Cette page résume le README et la documentation du dépôt à la date d’octobre 2026. La référence reste le dépôt lui-même.