合并受阻
欢迎来到 openUBMC 社区
Hey @xiaoxinglxs , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅机器人自助配置使用手册。
联系指引
有疑问可以联系 SIG: sig-component-drivers ,
维护者是: @dongyushan, @net_swift_wangchen, @sam_h1973, @u012924942, @weixin_37569011, @xiaoxinglxs ,
优秀贡献者是: @hzy1010, @leessential .


人工检视报告
感谢 @xiaoxinglxs 的贡献!本 PR 针对「同物理地址 EID/路由字段变化未触发更新、两卡交换 EID 的登记串改、驱动失败后恢复、MDB 订阅与物理迁移」做了系统性重构:路由表改为比较完整平坦字段并「先撤销旧身份/事务再发布新路由」;retire_peer 定向退休端点并终结等待/重组/响应预约/PLDM 回复上下文;upd_mdb_endpoint 修正订阅参数与重绑、以 active/route_withdrawn/config_failed 保护延迟订阅和驱动失败重试。整体设计自洽、测试覆盖充分,与既有多个机器人评论(多数已 resolved)处理方向一致。
📋 检视概览
| 项目 | 详情 |
|---|---|
| 评级 | 良好 |
| 严重问题 | 0 |
| 警告 | 1 |
| 建议 | 1 |
已确认修复的问题 ✅
- 路由撤销路径已补 PCIe 绑定守卫(
on_del_entry/on_del_reg过滤phys_transport_binding_id),与on_add_entry对称,非 PCIe 同地址删除不再误撤销 PCIe 端点,且恢复/撤销介质守卫不对称问题已由回归覆盖。 retire_peer与request的计时器所有权已收敛:撤销前先清wait.timer再stop,唤醒后的请求退出不再重复停止,双停问题有单测(test_retirement_stops_wait_timer_once_before_resume)。- PCIe 陈旧来源校验已落地(
rx按remote_phy_addr与当前端点物理身份比对),并有正/反回归及 wire parser 来源注入测试。
需关注的问题(已关联代码行)
| # | 文件 | 行 | 级别 | 说明 |
|---|---|---|---|---|
| 1 | src/lualib/mctp_engine.lua |
543 | ⚠️ 警告 | 超时/复位时跳过 more_process_cb 可能残留 NVMe 重放/对账状态 |
| 2 | src/lualib/mctp_engine.lua |
567 | 💡 建议 | reservation 参数入 wait_info 后从未被读取,属死代码 |
结论与建议
核心路由重绑、退休与恢复逻辑正确且测试充分,可作为本次迭代候选。建议后续合入前:
- 澄清
more_process_cb在超时/撤销路径上的 NVMe 状态清理语义(当前行为变更需显式确认); - 清理未使用的
reservation参数字段,避免维护歧义。
其余待办(完整 SMBus 接口身份、本端全局复位后的旧 Tag 隔离、Control/V2、阶段 2)与 PR 描述一致,可继续在后续迭代推进。


| 任务名称 | 结果 |
|---|---|
| pre-commit检查 | ✅ SUCCESS |
| PR描述检查 | ✅ SUCCESS |
| 防投毒检查 | ✅ SUCCESS |
| 开源合规检查 | ✅ SUCCESS |
| 编译构建 | ✅ SUCCESS |
| UT测试 | ✅ SUCCESS |
| IT测试 | ❌ FAILED |
| 代码覆盖率 | ❌ FAILED |
| 修改行数检查 | ✅ SUCCESS |
| 头文件检查 | ✅ SUCCESS |
| AI Review | ✅ SUCCESS |


[P2] 按整数返回码判断登记结果,使失败恢复分支可达
驱动登记失败时,本 PR 新增的未就绪标记和路由刷新重试实际上不会执行:hw_pcie_vdm_channel::config_eid_table() 返回 int(成功为 0,失败返回 E_ERROR=-1 或驱动非零错误码),l_mctp.cpp:415 又通过 c_func_wrap 直接把整数交给 Lua;Lua 中 0 和 -1 都是真,因此这里总进入成功分支,清掉 config_failed、把端点标成已发现并创建端点。on_entry_updated 只重试 config_failed 的登记,后续同值路由刷新也不会恢复。当前 SHA 的真实 Lua 函数以 -1/0 返回值做隔离探针时,首次失败后得到 status=1, config_failed=nil, endpoint_exists=true,刷新后驱动调用仍为 1 次;测试中用 false/true 模拟驱动掩盖了该契约。请显式比较成功返回码(或在绑定层明确定义布尔返回),并将失败/恢复回归改为真实数字返回值。这里指出的是本 PR 新增恢复分支不可达;原有裸真假判断不另记一个旧缺陷。


当前PR是否有AI参与:
[ ] 否
[x] 是
__1. AI Agent 平台: OpenAI Codex
__2. AI 模型: gpt-6-astra(实现、测试和独立只读复核)
__3. Prompt上下文 : 用户要求继续SP888-MCTP阶段1,修复地址/路由变化后的旧事务失效及评审意见,完成真实验收后再发布模板;mctpd仅提交PR、暂不合入。
PR功能描述 / 为什么需要这个合入:
同物理地址的EID或路由字段变化未触发更新,端点、等待查询和MDB通知仍使用旧身份;两张网卡交换EID时按“物理地址或EID”首匹配还会串改另一张卡的登记。
修改方案:
比较完整路由字段,先撤销旧身份再恢复新路由;定向退休端点、唤醒对应等待查询并对接重组/响应预约和PLDM回复上下文清理。登记优先匹配物理身份,多协议消费者逐个恢复;驱动失败标记未就绪,随现有路由刷新重试,支持失败后换EID。修复MDB订阅参数、空signal、延迟订阅重复投递,物理迁移重建路径并刷新诊断映射。协议类型是登记键,换类型需独立登记。版本保持1.130.20、一个提交。
验证方案:
独立main基线构建native/ARM并执行全部单测;与!11共享传输、!12取时、!13回复上下文、!14有界发送整合后验收真实重绑、资源耗尽和恢复。
测试建议:
在专用43000覆盖活动查询/回复上下文/TX中途改址、两卡交换EID、驱动暂时失败和恢复,核对其他网卡不中断及MDB通知归属。继续真实未授时、压力、Control纳管/V2和阶段2。
自验证报告:
当前提交 e63cbf5544422b6b40d333a1785bbbb163034971:127/127通过、完整pre-commit与差异检查通过;841新增/40删除、版本仍1.130.20、单提交。
撤销端点后正常及延迟初始订阅都不再查找已移除端点,恢复后仅投递一次;先复现3次无效查找再修复通过。真实PCIe报文解析会提供完整来源BDF;缺失物理上下文保持拒收,新增正反用例确认,不放宽来源隔离。
集成8185d56配合qemu_mockup f14e28f(模块b2533c73)在43000实测:44次PLDM请求、NC-SI前后各8查询全部通过;变更卡旧查询3.48秒MctpEndpointReset,未变更卡15.02秒MctpRequestTimeout;旧来源0误投递,重绑与恢复8条通知正确归属。stubs=[]、未注入查询响应,inventory_ready=true。
该实机结果对应8185d56;当前追加的撤销订阅守卫和来源解析测试未安装实测。生产C++未变化,沿用主线C++构建及冻结清单。本轮Lua执行与历史ARM/native构建记录分别保留。
完整阶段1的Control/V2、资源压力、真实未授时,以及阶段2尚未完成,不将局部通过视为整体验收。控制台与其他实例未重启。
当前追加计时器所有权修复:撤销等待项先清空timer再停止,唤醒后的请求退出不重复停止。新增回归先复现2次清理,再通过仅1次清理;126项与完整pre-commit通过,真实8185d56结果仍是此前候选,不冒充本修订实测。
介质评审补证:add_reg_info固定登记PCIe,SMBus发现不进入该表;新增同地址/EID的SMBus端点测试,PCIe登记改址和清表均保持SMBus端点可用。该测试在原实现上即通过,未伪造失败或以重放PCIe路由替代SMBus纳管。当前修订仅补测试与范围文档,生产源码与8ea5479一致。
该PR关联的issue
fixes #15
希望检视人员了解:
计划依次整合!11(1.130.16)、!12(1.130.17)、!13(1.130.18)、!14(1.130.19)、本PR(1.130.20),共享文件整合必须保留双方修改。协议定向清理依赖!11;PLDM pending清理在启用!13时生效;旧排队TX身份检查依赖!14。单独main可运行,但不能提供缺失模块的能力。已经写入硬件的报文不能撤回,完整SMBus接口身份、本端全局复位后的旧Tag隔离、Control资源和V2仍未完成。全部mctpd PR保持未合入,不触发合并机器人。