TAKT 之外
qemu-thunderbolt
一个为 QEMU 添加 Thunderbolt 风格 PCIe 热插拔层的分支。其后的设备仍是普通的 QEMU PCI 设备;该层控制客户机是否看到它们已连接,并发出热插拔通知。
- QEMU
- Thunderbolt
- PCIe
- macOS
- 状态
- 实验性:在 2026 年 7 月的 QEMU master 之上的五个提交,位于
tb-bus分支。已在 macOS 客户机上验证:显示设备的识别与移除、NVMe 的热插入与拔出,以及 USB 存储的挂载、写入、弹出和重新插入,数据保持完好。 - 许可证
- GPL-2.0-or-later,与 QEMU 相同;
thunderbolt-vga.c沿用其所源自的 stdvga 代码的 MIT 许可证。 - 平台
- QEMU
qemu-system-x86_64,q35 机器;macOS 客户机。
解决什么问题
有些客户机无法对某个设备使用直接的 PCIe 热插拔。macOS 是主要的验证目标:即使同一端点无法直接进行 PCIe 热插拔,它也能通过客户机可见的 Thunderbolt 层看到该设备。这样就可以向运行中的客户机添加和移除真实设备与虚拟设备。
主要功能
thunderbolt-root-port:带有独立thunderbolt-bus的 PCIe 根端口;其connected属性可断开并重新连接整个端口。thunderbolt-pcie-pci-bridge:用于隧道传输 PCI 端点的 PCIe 到 PCI 桥,带有 Thunderbolt 相关的 ACPI 属性。thunderbolt-vga:可热插拔、兼容 stdvga 的显示设备;常规VGA设备保持不变,仍不可热插拔。- 提供显示设备、xHCI 控制器后的 USB 存储和 NVMe 驱动器的示例,全部在 QEMU monitor 中操作。
- 一个针对显示设备热插拔的 qtest,以及
docs/specs中的文档。
工作原理
客户机在 q35 机器上启动,带有常规的启动显示设备和一个空的 thunderbolt-root-port。在 QEMU monitor 中,device_add 将端点放到该端口的总线上,device_del 将其移除;qom-set … connected false 和 true 可拔出并重新插入整个端口。根端口提供客户机看到的 ACPI 描述和 PCIe 热插拔信令;端点设备模型本身不做修改。
(qemu) device_add thunderbolt-vga,id=tbvga0,bus=tbrp0,addr=0x00 (qemu) device_del tbvga0 (qemu) qom-set /machine/peripheral/tbrp0 connected false
要求
- 从仓库的
tb-bus分支构建的 QEMU。 - q35 机器类型;示例使用
qemu-system-x86_64。 - 启动显示设备保持为常规
VGA;Thunderbolt 显示设备在启动后添加。
本页概述了截至 2026 年 10 月该仓库的 README 和文档内容。以仓库本身为准。