Nous venons de lancer le service. Le site et le service sont encore en cours de finition : nous vous prions d’excuser d’avance d’éventuelles imprécisions ou maladresses. Vous avez repéré une erreur ou quelque chose ne fonctionne pas comme prévu ? Écrivez-nous, nous corrigerons rapidement.

← Tous les projets
FR
Au-delà de TAKT

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.c conserve la licence MIT du code stdvga dont il dérive.
Plateformes
QEMU qemu-system-x86_64 avec 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 propre thunderbolt-bus ; sa propriété connected dé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érique VGA habituel 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-bus du dépôt.
  • Le type de machine q35 ; les exemples utilisent qemu-system-x86_64.
  • L’affichage de démarrage reste un VGA habituel ; 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.