我们刚刚上线。网站和服务仍在完善中,如有不准确或不完善之处,敬请谅解。发现了错误或有功能不正常? 请告诉我们,我们会尽快修复。

← 全部项目
ZH
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 和文档内容。以仓库本身为准。