qemu-thunderbolt
Una rama de QEMU que añade una capa de conexión en caliente PCIe al estilo Thunderbolt. Los dispositivos detrás de ella siguen siendo dispositivos PCI normales de QEMU; la capa controla si el invitado los ve conectados y envía las notificaciones de conexión en caliente.
- QEMU
- Thunderbolt
- PCIe
- macOS
- Estado
- Experimental: cinco commits sobre el master de QEMU de julio de 2026, en la rama
tb-bus. Validado con invitados macOS: detección y retirada de la pantalla, conexión y desconexión en caliente de NVMe, montaje, escritura, expulsión y reconexión de almacenamiento USB con los datos intactos. - Licencia
- GPL-2.0-or-later, como QEMU;
thunderbolt-vga.cconserva la licencia MIT del código stdvga del que deriva. - Plataformas
- QEMU
qemu-system-x86_64con la máquina q35; invitados macOS.
Qué resuelve
Algunos invitados no pueden usar la conexión en caliente PCIe directa para un dispositivo. macOS es el principal objetivo de validación: ve el dispositivo a través de una capa Thunderbolt visible para el invitado, aun cuando la conexión en caliente PCIe directa del mismo endpoint no es utilizable. Así se pueden añadir y quitar dispositivos reales y virtuales en un invitado en ejecución.
Funciones principales
thunderbolt-root-port: un puerto raíz PCIe con su propiothunderbolt-bus; su propiedadconnecteddesconecta y vuelve a conectar el puerto completo.thunderbolt-pcie-pci-bridge: un puente PCIe-PCI para endpoints PCI tunelizados, con propiedades ACPI relacionadas con Thunderbolt.thunderbolt-vga: una pantalla compatible con stdvga que admite conexión en caliente; el dispositivoVGAnormal no cambia y sigue sin admitirla.- Ejemplos para una pantalla, almacenamiento USB detrás de un controlador xHCI y una unidad NVMe, todo desde el monitor de QEMU.
- Un qtest para la conexión en caliente de pantalla y documentación en
docs/specs.
Cómo funciona
El invitado arranca en una máquina q35 con su pantalla de arranque normal y un thunderbolt-root-port vacío. En el monitor de QEMU, device_add coloca un endpoint en el bus del puerto y device_del lo retira; qom-set … connected false y true desconectan y vuelven a conectar el puerto completo. El puerto raíz aporta la descripción ACPI y la señalización de conexión en caliente PCIe que ve el invitado; los modelos de los dispositivos endpoint no cambian.
(qemu) device_add thunderbolt-vga,id=tbvga0,bus=tbrp0,addr=0x00 (qemu) device_del tbvga0 (qemu) qom-set /machine/peripheral/tbrp0 connected false
Requisitos
- QEMU compilado desde la rama
tb-busdel repositorio. - El tipo de máquina q35; los ejemplos usan
qemu-system-x86_64. - La pantalla de arranque sigue siendo un
VGAnormal; una pantalla Thunderbolt se añade después del arranque.
Esta página resume el README y la documentación del repositorio a octubre de 2026. La fuente de referencia es el propio repositorio.