Acabamos de lançar. O site e o serviço ainda estão sendo aprimorados — pedimos desculpas desde já por eventuais imprecisões ou falhas. Encontrou um erro ou algo não funciona como esperado? Escreva para nós e corrigiremos rapidamente.

← Todos os projetos
PT
Além do TAKT

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.c mantém a licença MIT do código stdvga do qual deriva.
Plataformas
QEMU qemu-system-x86_64 com 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óprio thunderbolt-bus; a propriedade connected desconecta 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 dispositivo VGA comum 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-bus do repositório.
  • O tipo de máquina q35; os exemplos usam qemu-system-x86_64.
  • O display de boot continua sendo um VGA comum; 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.