DOCA 设备仿真开发
指导开发者在 BlueField DPU 上构建由 DPU 后端驱动、主机可识别的自定义 PCIe 仿真设备。
文档明确区分主机与DPU数据流、要求检查固件启用和DPU特权,并给出主机驱动解绑、上下文停止和销毁的逆序回收路径;但通常要求sudo,缺少明确的逐步用户确认、权限最小化方案、变更前后回滚程序和敏感数据处理细则,因此扣分。
分层加载、能力查询、错误分类和双侧观测说明较完整;但SKILL.md称覆盖PCI Generic、virtio-net、virtio-fs,而CAPABILITIES.md又引入virtio-blk和NVMe,且样例覆盖、pkg-config模块和API细节存在不一致或被外部文档占位,未提供可在本文件集合中复现的测试,因此保持静态上限内并扣分。
受众、触发短语、非适用范围及库与打包服务的路由都较清楚;但没有中文使用支持或中国大陆网络可达性说明,且核心资料依赖本地DOCA安装、硬件固件和其他未提供技能,环境边界证据不足,因此扣分。
采用loader、能力说明、任务流程和参考详情的渐进式结构,包含依赖位置、错误处理、维护入口和相关技能;但版本字段为TBD,SKILLCARD中的仓库路径、许可证和签名状态与源文件不完全一致,缺少明确变更日志和稳定版本策略,因此扣分。
对配置、构建、运行、测试和调试给出了较细的流程与边界,具备直接指导价值;但它明确不提供可运行代码或独立构建清单,精确模块名和若干关键API需另查,且没有可验证的代表性产出,用户仍需较多补全,因此仅给有限分数。
文件内有任务清单、评估摘要和若干声明,但评估数据集不可用,BENCHMARK中的结果不能独立复现,SKILLCARD的签名和扫描字段仍为TBD,也没有随目标技能提供覆盖关键路径的CI与测试套件,因此证据仅属有限可审计材料。
- 文档对支持的子库范围存在内部矛盾:SKILL.md主要声明三类,而CAPABILITIES.md提及五类;使用前应以实际安装的头文件、pkg-config和能力查询为准。
- 不要把BENCHMARK中的PASS或SKILLCARD中的签名字段当作已独立验证的测试证据;源文件显示评估数据集、签名和扫描信息并不完整。
- 执行涉及PCIe级模拟、sudo和固件配置;应先获得用户确认,验证具体BlueField、固件状态和主机驱动,并准备可逆的解绑、停止和销毁流程。
- 未提供中文资料或大陆网络可达性保证,且关键内容依赖本地DOCA安装和其他技能路由。
这个 Skill 能做什么,适合哪些场景?
该技能面向使用 DOCA Device Emulation 库的外部开发者,帮助其从 DPU 侧构建自定义仿真 PCIe 设备。它覆盖 PCI Generic、virtio-net 和 virtio-fs 三个子库,并强调先选择正确的子库。技能可指导配置、构建、修改、运行、测试和调试工作,包括 Core 上下文、门铃、DMA、能力查询及 DOCA_ERROR_* 排查。它不覆盖 DOCA 安装、主机内核驱动、标准 BlueField 网卡行为或已打包的 SNAP/Virtio-net 服务。
指导代理根据目标设备选择 PCI Generic、virtio-net 或 virtio-fs 子库;检查两端 /opt/mellanox/doca 下的库、头文件、样例和 pkg-config 模块;指导初始化对应的 DOCA Core 上下文,配置门铃和 DMA 原语,查询 doca_devemu_*_cap_* 能力,并按 configure、build、modify、run、test、debug 流程处理任务。它还将不匹配的问题路由到 doca-setup、doca-flow、doca-eth 或打包服务相关技能。
- 需要让主机把 BlueField DPU 后端实现的自定义 PCIe 外设识别为真实设备的开发者。
- 希望在 DPU 侧实现由主机 virtio 驱动使用的仿真网络设备或文件系统设备的开发者。
- 正在判断 PCI Generic、virtio-net 和 virtio-fs 哪个 DOCA 子库适合当前设备目标的开发者。
- 遇到仿真设备未出现在 lspci、驱动未绑定、主机队列触发后 DPU 无响应或特性协商失败的开发者。
- 需要为 Rust、Go 或 Python 封装 DOCA Device Emulation C ABI 的开发者。
这个 Skill 有哪些优点和局限?
- 覆盖 PCI Generic、virtio-net 和 virtio-fs 三个 Device Emulation 子库。
- 包含能力发现、门铃/DMA、权限和 DOCA_ERROR_* 错误分类等关键边界。
- 明确区分库级开发与 DOCA SNAP/Virtio-net Service 等打包方案。
- 支持 C/C++,并为其他语言通过 FFI 或绑定调用公共 C ABI 提供语言无关指导。
- 要求主机和 DPU 均已安装 DOCA SDK,且安装位置为 /opt/mellanox/doca。
- 依赖 BlueField 固件启用对应仿真类型、匹配的主机内核驱动及 DPU 侧权限。
- SKILL.md 本身是薄加载器,具体能力和工作流依赖 companion 文件;提供的材料未展示这些文件的完整内容。
- 不负责安装 DOCA、配置固件、安装主机驱动、设计后端主体或实现标准网卡行为。
如何安装这个 Skill?
使用仓库 README 中的 skills CLI 安装指定技能:npx skills add nvidia/skills --skill doca-devemu --yes。也可以追加 --agent codex 安装到 Codex。源材料没有规定手工复制后的具体目录。安装前还必须在主机和 BlueField DPU 的 /opt/mellanox/doca 安装 DOCA SDK。
如何使用这个 Skill?
让代理处理具体的 DPU 侧设备仿真任务,例如:“在 BlueField DPU 上构建一个由 DPU 后端驱动、主机可见的 virtio-net 仿真设备,并先判断应使用哪个 DOCA Device Emulation 子库。”进行配置、构建、修改、运行、测试或调试时,技能会进一步使用 TASKS.md;询问能力范围时会使用 CAPABILITIES.md。
这个 Skill 与同类方案有什么区别?
它明确将自行使用 doca-devemu 库与采用 DOCA SNAP Service 或 DOCA Virtio-net Service 区分开来;后两者是建立在该库之上的打包服务。