qemu-thunderbolt
Um branch do QEMU que acrescenta uma camada de hotplug PCIe no estilo Thunderbolt. Os dispositivos atrás dela continuam sendo dispositivos PCI comuns do QEMU; a camada controla se o guest os vê conectados e envia as notificações de hotplug.
- QEMU
- Thunderbolt
- PCIe
- macOS
- Status
- Experimental: cinco commits sobre o master do QEMU de julho de 2026, no branch
tb-bus. Validado com guests macOS: detecção e remoção de display, hotplug e remoção de NVMe, montagem, gravação, ejeção e reconexão de armazenamento USB com os dados intactos. - Licença
- GPL-2.0-or-later, como o QEMU;
thunderbolt-vga.cmantém a licença MIT do código stdvga do qual deriva. - Plataformas
- QEMU
qemu-system-x86_64com a máquina q35; guests macOS.
O que resolve
Alguns guests não conseguem usar o hotplug PCIe direto para um dispositivo. O macOS é o principal alvo de validação: ele enxerga o dispositivo por meio de uma camada Thunderbolt visível para o guest, mesmo quando o hotplug PCIe direto do mesmo endpoint não é utilizável. Assim, dispositivos reais e virtuais podem ser adicionados e removidos em um guest em execução.
Principais recursos
thunderbolt-root-port: uma root port PCIe com seu própriothunderbolt-bus; a propriedadeconnecteddesconecta e reconecta a porta inteira.thunderbolt-pcie-pci-bridge: uma bridge PCIe-PCI para endpoints PCI tunelados, com propriedades ACPI relacionadas ao Thunderbolt.thunderbolt-vga: um display compatível com stdvga que aceita hotplug; o dispositivoVGAcomum não muda e continua sem hotplug.- Exemplos para um display, armazenamento USB atrás de um controlador xHCI e uma unidade NVMe, tudo pelo monitor do QEMU.
- Um qtest para hotplug de display e documentação em
docs/specs.
Como funciona
O guest inicia em uma máquina q35 com seu display de boot normal e uma thunderbolt-root-port vazia. No monitor do QEMU, device_add coloca um endpoint no barramento da porta e device_del o remove; qom-set … connected false e true desconectam e reconectam a porta inteira. A root port fornece a descrição ACPI e a sinalização de hotplug PCIe que o guest vê; os modelos dos dispositivos endpoint não mudam.
(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 a partir do branch
tb-busdo repositório. - O tipo de máquina q35; os exemplos usam
qemu-system-x86_64. - O display de boot continua sendo um
VGAcomum; um display Thunderbolt é adicionado depois do boot.
Esta página resume o README e a documentação do repositório em outubro de 2026. A fonte de referência é o próprio repositório.