qemu-thunderbolt
Un branch di QEMU che aggiunge un livello di hotplug PCIe in stile Thunderbolt. I dispositivi dietro di esso restano normali dispositivi PCI di QEMU; il livello controlla se il guest li vede connessi e invia le notifiche di hotplug.
- QEMU
- Thunderbolt
- PCIe
- macOS
- Stato
- Sperimentale: cinque commit sopra il master di QEMU di luglio 2026, nel branch
tb-bus. Validato con guest macOS: rilevamento e rimozione del display, hotplug e scollegamento di NVMe, montaggio, scrittura, espulsione e ricollegamento di uno storage USB con i dati intatti. - Licenza
- GPL-2.0-or-later, come QEMU;
thunderbolt-vga.cmantiene la licenza MIT del codice stdvga da cui deriva. - Piattaforme
- QEMU
qemu-system-x86_64con la macchina q35; guest macOS.
Quale problema risolve
Alcuni guest non possono usare l’hotplug PCIe diretto per un dispositivo. macOS è il principale obiettivo di validazione: vede il dispositivo attraverso un livello Thunderbolt visibile al guest, anche quando l’hotplug PCIe diretto dello stesso endpoint non è utilizzabile. Così si possono aggiungere e rimuovere dispositivi reali e virtuali in un guest in esecuzione.
Funzionalità principali
thunderbolt-root-port: una root port PCIe con un propriothunderbolt-bus; la sua proprietàconnectedscollega e ricollega l’intera porta.thunderbolt-pcie-pci-bridge: un bridge PCIe-PCI per endpoint PCI tunnellizzati, con proprietà ACPI relative a Thunderbolt.thunderbolt-vga: un display compatibile stdvga che supporta l’hotplug; il normale dispositivoVGAresta invariato e non supporta l’hotplug.- Esempi per un display, uno storage USB dietro un controller xHCI e un’unità NVMe, tutti dal monitor di QEMU.
- Un qtest per l’hotplug del display e documentazione in
docs/specs.
Come funziona
Il guest parte su una macchina q35 con il suo normale display di avvio e una thunderbolt-root-port vuota. Nel monitor di QEMU, device_add collega un endpoint al bus della porta e device_del lo rimuove; qom-set … connected false e true scollegano e ricollegano l’intera porta. La root port fornisce la descrizione ACPI e la segnalazione di hotplug PCIe che il guest vede; i modelli dei dispositivi endpoint non cambiano.
(qemu) device_add thunderbolt-vga,id=tbvga0,bus=tbrp0,addr=0x00 (qemu) device_del tbvga0 (qemu) qom-set /machine/peripheral/tbrp0 connected false
Requisiti
- QEMU compilato dal branch
tb-busdel repository. - Il tipo di macchina q35; gli esempi usano
qemu-system-x86_64. - Il display di avvio resta un normale
VGA; un display Thunderbolt si aggiunge dopo l’avvio.
Questa pagina riassume il README e la documentazione del repository a ottobre 2026. La fonte di riferimento è il repository stesso.