Open
fix: 完善 MCTP 端点取消与协议动作收尾 #1331
fix: 完善 MCTP 端点取消与协议动作收尾 #1331
Open
liuxingsenAdd on 25 days ago
liuxingsenCollaborators
25 days ago

当前PR是否有AI参与:

[ ] 否

[x] 是
__1. AI Agent 平台: OpenAI Codex(桌面应用;本次会话后端 codex-cli 0.155.1)
__2. AI 模型: gpt-6-astra(原实现与验证);本轮更新使用 GPT-6,当前会话未提供可核实的精确型号
__3. Prompt上下文 : 按用户要求审视原 #1331,按修改点和影响范围拆成约三组,完整保留有效修复、测试、文档及原署名。用户选择保持每个 PR 相对目标分支一个提交,先更新基础 PR,网卡/NVMe 完成拆分和验证后等待基础合入再发布。基于当时主线整理,复用构建环境串行验证;2026-11-02 再按最新主干更新独立日志和候选版本;不自动合入。

PR功能描述 / 为什么需要这个合入:

本 PR 现收敛为 MCTP 端点取消、在途回调收尾及协议动作队列基础能力。在停止或注销与端点发现回调重叠时,取消旧代次,并在活动回调结束后执行消费者提供的清理动作,避免同步重入直接释放仍被当前调用栈访问的资源。

主线 70e2e189 尚不包含该基础修复。Broadcom/Emulex 和 Huawei/Samsung 使用方迁移分别保留为两个后续分组;它们依赖本 PR,但互不依赖。该基础 PR 不宣称已完成所有驱动的生命周期迁移。

修改方案:

  • 保留 cancel_endpoint_retry(cleanup) 的取消/排空契约:同步可完成时返回 true;同线程嵌套不能等待当前栈,返回 false,由活动退出路径在锁外执行延后清理。
  • 保留管理对象的活动期间保活、代次检查及原同步 destroy 兼容行为;非框架管理对象仍需调用方保证存活,不能在活动回调内直接 delete。
  • 引入协议动作队列,串行执行停旧、清理和启动,短锁只保护队列;区分当前同步入队项与异步/嵌套项的异常归属。
  • 保留真实 MCTP 回归、六个队列测试、NCSI/NVMe/PLDM mock 兼容适配及完整设计说明。文档中的消费者场景描述整组方案,具体驱动代码由后续 PR 交付。
  • 保留八个功能文件,根 CHANGELOG 沿用主干历史;本 PR 新增 changelog.d/pr-1331.md,候选版本与 mds/service.json 同为 1.2.580,保持一个提交。

验证方案:

构建并串行运行 MCTP class/service、NCSI、NVMe 公共库、三类 PLDM 测试程序;核对取消、重入、旧代次、回调期间最后外部引用释放及协议队列异常路径。逐文件核对三分组重组后有效内容与原 PR 整合快照一致。

测试建议:

在正式依赖和目标板验证发现重试期间停止/拔出、回调内重入、实际消费者资源释放顺序,并执行 sanitizer。网卡和 NVMe 的完整消费者回归随其后续分组验证,不能由基础库通过替代。

自验证报告:

历史验证(2026-10-27,旧提交 8af3223b99835637b94d7eabd007aa01cb34290a,基于当时 main 2668a82e19b0c7d3b9c22f0cf422cc4c10bc651b):

  • 当时源码构建成功,7 个测试程序、955/955 项通过,失败/错误/跳过/禁用均为 0:mctp_class_test、mctp_service_test、ncsi_over_mctp_test、test_nvme、pldm_over_mctp_test、pldm_over_mctp_huawei_standard_test、pldm_over_mctp_wangxun_test。
  • 全部变更文件 pre-commit、提交消息检查、git diff --check 通过。保留原作者、版权/许可证、Signed-off-by、原 Change-Id 及真实 AI 元数据。
  • 使用既有共享构建与缓存依赖,ninja -j2,测试批次和程序串行;Linux plain、断言开启。保存本轮 XML、日志、源码树及运行实体哈希。
  • 未执行目标板、仿真升级、正式产品 Conan 构建或本地 sanitizer,也未证明任意 strict-strand 相互等待均安全。正常框架路径持有管理对象的共享所有权;裸 ABI 对象在活动回调中直接 delete 不在保障契约内。
  • 原整组提交 dcb7f8be 的 2333 项及旧远端 CI 成功不计为当前提交通过;远端门禁须按当前 SHA 重新读取。

2026-11-02,本次提交 7a2c2f88574bc8d9527eda8e5b54e28255faf2b0 基于 main 70e2e189b2f54743bd734233c97e7f6456b340d3:八个功能文件与旧提交逐字节一致;根 CHANGELOG 与主干一致,独立日志和服务版本均为 1.2.580。全部变更文件 pre-commit、提交钩子、差异检查通过。未重新运行本地 C++ 测试;上一提交 5475ff18 的远端构建、UT、ASAN 已通过(历史结果);本次提交 7a2c2f88574bc8d9527eda8e5b54e28255faf2b0 的 远端流水线 已完成,文件头、构建、UT、ASAN、最终汇总等已启用步骤没有失败;Test_version_check 被跳过,版本 +1 由本轮另行核对。合入前须核对主干最新版本,候选版本只能是主干版本加一;若其他 PR 先合入,需在合入前重基并重新取下一版。

该PR关联的issue

fixes #866

希望检视人员了解:

原整组改动按依赖拆为:①本 PR 的基础能力;②Broadcom/Emulex 网卡;③Huawei/Samsung NVMe。后两组已建立独立源码分组,仅依赖①,按用户要求待①由维护者正常合入后重基发布,各保持一个提交。本次没有合并、关闭 PR,未把共享基础重复复制进三个上游 PR。

完整保留测试和文档时,自然分组仍超过1000行;未通过删回归或拆散同一取消/排空契约凑行数。本 PR 当前共1393行变更(新增+删除,含测试、文档和版本元数据)。

原生命周期总任务的入口保留在基础子任务的备注中。本 PR 仅关联并在合入后关闭基础子任务 #866,避免提前关闭网卡与 NVMe 未交付范围。

原评审 194981645(析构与延后清理)、194981662(OEM 宿主执行器)分别涉及基础保活和后续消费者调用契约;保留评审历史及开放状态,不因代码移出本 PR 就标记解决。后续消费者 PR 需携带这些意见及可核验依据。

本轮复核另外三条旧检视意见:196356472 所述把定时器启动直接移出状态锁,会让取消操作插在“发布句柄”和“启动”之间,反而可能重新武装已取消的定时器;196356474 的同步异常范围已由队列注释和同步/嵌套/延后失败测试界定;196356477 的固定等待在极慢环境中仍可能超时,保留为待评估的测试稳定性意见。以上未因本轮重基而擅自标记解决。

likedislike
Merge blocked
LliuxingsenCollaborators
25 days ago Created pull request, commit afb3b8c8
LliuxingsenCollaborators
25 days ago Associated issue: [任务]: 整合驱动内存边界和异步生命周期修复并完成回归验收,[任务]: 完善 Broadcom 及 Hisi 剩余定时器重启、停止和析构顺序,补充异步生命周期回归
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: sig/sig-component-drivers
openUBMC-robot
openUBMC-robotCollaborators
25 days ago Comments:

欢迎来到 openUBMC 社区

Hey @xiaoxinglxs , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。

联系指引

有疑问可以联系 SIG: sig-component-drivers ,
维护者是: @dongyushan, @net_swift_wangchen, @sam_h1973, @u012924942, @weixin_37569011, @xiaoxinglxs ,
优秀贡献者是: @adellonzzy, @avery-j, @changxingOpenUBMC, @chenshengfan, @dli_bmc, @huangjiapei, @leessential, @net_swift_tianwen, @xiapengc1, @yelvsub .

likedislike
openUBMC-robotopenUBMC-robotCollaborators
25 days ago Added label: ai-co-authored
274 messages are collapsed here。 See more
openubmc-ci-botCollaborators
6 days ago Comments:

CI已开始运行,查看流水线详情:流水线链接

likedislike
Oopenubmc-ci-botCollaborators
6 days ago Removed label: ci-running
openubmc-ci-botCollaborators
6 days ago Comments:
任务名称结果
pre-commit检查✅ SUCCESS
PR描述检查✅ SUCCESS
防投毒检查✅ SUCCESS
开源合规检查✅ SUCCESS
编译构建✅ SUCCESS
UT测试✅ SUCCESS
头文件检查✅ SUCCESS
AI Review✅ SUCCESS
ASAN检测✅ SUCCESS
likedislike
Oopenubmc-ci-botCollaborators
6 days ago Added label: ci-successful
LliuxingsenCollaborators
6 days ago Modify description of pull request