Open
feat: 增加有界 PCIe 消息发送与写入结果回传 #14
liuxingsenAdd on 13 days ago
feat: 增加有界 PCIe 消息发送与写入结果回传 #14
Open
Merged fromxiaoxinglxs/mctpdfeat/mctp-bounded-txintoopenUBMC/mctpdmain
Merge blocked
13 days ago Created pull request, commit c468dd50
13 days ago Associated issue: [任务] 增加有界 PCIe 消息发送与驱动结果回传
13 days ago Added label: sig/sig-component-drivers
openUBMC-robot
13 days ago Comments:
13 days ago Comments:
欢迎来到 openUBMC 社区
Hey @xiaoxinglxs , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。
联系指引
有疑问可以联系 SIG: sig-component-drivers ,
维护者是: @dongyushan, @net_swift_wangchen, @sam_h1973, @u012924942, @weixin_37569011, @xiaoxinglxs ,
优秀贡献者是: @hzy1010, @leessential .


13 days ago Added label: ai-co-authored
76 messages are collapsed here。 See more
13 days ago Added label: limit_1k_suc
openubmc-ci-bot
13 days ago Comments:
13 days ago Comments:
人工检视报告(复核)
感谢 @xiaoxinglxs 的贡献!本次复核针对最新修订 b05cd39 逐条核对先前检视意见的落地状态,确认本轮改动设计清晰、边界语义(准入 vs 驱动写入)划分明确,且补充了大量针对性的单元测试(新增 529 行),整体质量较高,未发现需要新增的行内阻塞性问题。
📋 检视概览
| 项目 | 详情 |
|---|---|
| 评级 | 良好 |
| 严重问题(P0/P1) | 0 |
| 警告(P2) | 0(原 P2 均已整改,见下) |
| 建议(P3) | 0 新增(继承已标记的低优先项) |
已确认修复的问题 ✅
逐条核对先前检视(atomgit-bot / openubmc-ci-bot)提出的意见在当前代码中的状态:
—set_owner_eid失效 PCIe TX 队列mctp_engine.lua的set_owner_eid已在地址实际变化时调用invalidate_pcie_tx(),与set_bmc_eid契约对齐,已修复。NVMe 准入失败导致命令槽泄漏—ep_nvme.lua的send/request已用pcall包裹super.send/super.request,并在重抛前先release_cmd_slot,已修复。同步容量拒绝时对正在运行的协程—skynet.wakeup的非法唤醒done回调增加wait.co ~= coroutine.running()守卫,且request()新增wait_info.err前置判定,已修复。— 当前meta.done(false,'capacity')无 pcall 隔离configure_pcie_tx已改为pcall(meta.done, false, 'capacity'),已修复。
仍需关注的问题(继承已标记,不重复评论)
on_tx_complete信号无生产订阅者(仅测试订阅),为新增未消费接口。- 消息级 128 帧/16KiB 上限与响应池 176KiB 预算的配比、100ms deadline 硬编码等,均为低优先建议项。
- 驱动永久挂起仍无自动恢复兜底,属实测项,PR 说明已声明待实测。
最终结论与建议
本 PR 交付目标(有界 PCIe 发送 + 写入结果回传 + 拒绝不再绕过调度直写)实现完整,先前检视提出的 P2 重点问题均已整改并有回归覆盖。按用户要求暂不合入,建议与 !11/!12/!13 整合后进入整体验收,重点实测驱动阻塞时长与真实吞吐,再确定 deadline 与配额候选值。


13 days ago Removed label: ci-running
openubmc-ci-bot
13 days ago Comments:
13 days ago Comments:
| 任务名称 | 结果 |
|---|---|
| pre-commit检查 | ✅ SUCCESS |
| PR描述检查 | ✅ SUCCESS |
| 防投毒检查 | ✅ SUCCESS |
| 开源合规检查 | ✅ SUCCESS |
| 编译构建 | ✅ SUCCESS |
| UT测试 | ✅ SUCCESS |
| IT测试 | ✅ SUCCESS |
| 代码覆盖率 | ✅ SUCCESS |
| 修改行数检查 | ✅ SUCCESS |
| 头文件检查 | ✅ SUCCESS |
| AI Review | ✅ SUCCESS |


13 days ago Added label: ci-successful
当前PR是否有AI参与:
[ ] 否
[x] 是
__1. AI Agent 平台: OpenAI Codex
__2. AI 模型: gpt-6-astra(实现、测试及只读复核)
__3. Prompt上下文 : 用户授权继续SP888-MCTP阶段1/2,要求统一发送与拥塞处理,mctpd仅提交PR暂不合入。本PR交付PCIe发送子项,不代替整体验收。
PR功能描述 / 为什么需要这个合入:
当前后台发送无界且每帧独立重试,提交成功无法反映实际驱动写入;底层回调拒绝后还会绕过队列直接写fd。本改动实现完整消息聚合、有界准入和写入结果回传。
修改方案:
验证方案:
分别重编译native/ARM协议核心与Lua绑定;通过真实编码链和非阻塞管道验证拒绝语义,测试容量、逐帧失败、迟到完成、回调重入及重新发现。
测试建议:
与PR !11、!12、!13组成候选,在专用43000做四卡业务、重发现、耗尽与恢复验证。mctpd暂不合入,不推广当前测试镜像。
自验证报告:
当前修订ea6ee52完整131/131通过,pre-commit全部通过,native及ARM核心/绑定已于e5a1105构建成功;本修订C++源码未变,复用该构建重跑完整Lua/协议测试。
三项复核发现已整改:重新发现应答被取消、取消回调重入异常、partial替换重入配额泄漏;回归先复现再通过。
真实管道证明拒绝报文不会直接写出;真实编码分片验证一次完成和等待槽身份。
包含本修订ea6ee52的集成43f21765fb4e在43000正常/真实时间服务退出/恢复各44请求通过(无BMC桩),P95为20.27/28.86/22.39ms;28条通知/52帧全部交付,5次合法未应答查询3.01~3.02秒超时。写入卡住及压力实机验收仍待完成,不以单元测试代替。
新增回归覆盖写入卡住后只保留真实在途额度、一次失败通知及恢复,NVMe异常释放,owner/地址/端点失效,Control真实线缆头以及128帧边界。
最新b05cd39db820补齐IT对新增两行PCIe TX诊断的断言:written>0、failed=0、blocked=false、数量为2;原库存/请求计数仍精确比较。131/131单测、pre-commit通过;调用IT原函数重放先失败后通过,失败/阻塞/缺行/旧字段错误均被拒绝。当前新增960行。此前ea6ee52的Test_it和Test_coverage因旧黄金文本不含诊断行失败,原日志保留;本轮已推送等待完整远端重跑,不能用本地文本重放替代远端IT。
该PR关联的issue
fixes #14
希望检视人员了解:
按用户要求暂不合入。建议整合顺序为共享传输!11、取时模块!12、PLDM应答!13、本发送PR,再进入整体验收。共改的engine/CHANGELOG须保留各模块逻辑。
本次仅统一PCIe出口;完整路由代次、Control RX预留、V2跨进程及阶段2业务继续独立补齐。入队和驱动write成功均不等于对端收到;已提交驱动的单帧无法撤回。100ms及内存预算是待实测候选值。新模块从原写服务抽离,保留来源Huawei版权和许可证,没有新增个人版权。