Open
feat: 增加有界 PCIe 消息发送与写入结果回传 #14
liuxingsenAdd on 13 days ago
feat: 增加有界 PCIe 消息发送与写入结果回传 #14
Open
liuxingsenAdd on 13 days ago
liuxingsenCollaborators
13 days ago

当前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。本改动实现完整消息聚合、有界准入和写入结果回传。

修改方案:

  • 所有System共享64项/256KiB队列:Control 8项/16KiB、requester 16项/64KiB、响应40项/176KiB;EOM到达后才发送,容量不足不发送消息前缀。
  • 唯一写服务单次写入后回复,失败停止尾片;回传只唤醒原wait对象。100ms候选调度期限,复位/地址往返/端点变化取消旧消息,不隐式重试或重置其他通道。
  • 分片上下文复制并导出SOM/EOM;通道回调false向上传递,不再回退直写。
  • 取消先完成摘除再回调,避免重入异常和额度泄漏;Prepare重新发现先取消旧事务,再在新代次提交Control应答。
  • 超时看门狗暂停新准入、回收过期等待,驱动调用返回前保留其额度;返回后恢复准入,不声称能取消内核write。NVMe命令槽在异常路径释放,debug dump及限频notice记录失败。
  • 版本1.130.19,保持一个提交;按!11/!12/!13/!14顺序使用1.130.16/17/18/19。

验证方案:

分别重编译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版权和许可证,没有新增个人版权。

likedislike
Merge blocked
LliuxingsenCollaborators
13 days ago Created pull request, commit c468dd50
LliuxingsenCollaborators
13 days ago Associated issue: [任务] 增加有界 PCIe 消息发送与驱动结果回传
openUBMC-robotopenUBMC-robotCollaborators
13 days ago Added label: sig/sig-component-drivers
openUBMC-robot
openUBMC-robotCollaborators
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 .

likedislike
openUBMC-robotopenUBMC-robotCollaborators
13 days ago Added label: ai-co-authored
76 messages are collapsed here。 See more
Oopenubmc-ci-botCollaborators
13 days ago Added label: limit_1k_suc
openubmc-ci-botCollaborators
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 与配额候选值。

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