【社区330版本】openUBMC跑AC CYCLE,出现BCU 3V3_RISER2概率误读

【测试步骤】

1、服务器安装openeuler 2203sp4系统

2、执行AC CYCLE100圈测试

【预期结果】

机器跑通100圈AC,BCU 3V3_RISER2不会读值(服务器没有RISER2卡),机器可以正常开机进入OS操作系统,无宕机,黑屏问题,检查BMC无告警,各硬件信息显示成功,系统日志无报错

【实际结果】

机器在第一圈AC CYCLE时读到BCU 3V3_RISER2传感器电压,第二圈没有读到该传感器,显示传感器状态为ns。

【问题定位】

服务器未配置RISER2卡,BCU 3V3_RISER2这个传感器正常不会有读值,在开机的一段时会有读值现象,这个属于问题,需要解决。

【配置信息】

BMC:26.03.00.01

BIOS:20.60.21(12/05/2025)

内核信息:Linux version 5.10.0-216.0.0.115.oe2203sp4.aarch64(root@dc-64g.compass-ci)(gcc-old(GCC) 10.3.1,GNU ld(GNU Binutis)2.37)#1 SMP Thu Jun 27 15:22:10 CST 2024

答案内容由AI生成,仅供参考:

:pushpin: 总结

项目 内容
问题本质 BMC 在 AC Cycle 启动初期误读了未安装硬件的传感器电压
主要原因 CSR 配置不当 + 缺乏 Presence 检测 + 无防抖机制
关键路径 AC Power OnScanner 启动ADC 读取浮空电压误识别为有效值后续检测失败 → ns
解决方案 1. 校正 CSR 配置
2. 增加 Presence 条件控制
3. 启用 Debounce 防抖
4. 升级 BMC 固件
点击此处查看详细分析解答

关于 openUBMC AC Cycle 测试中 BCU 3V3_RISER2 传感器误读问题的分析与建议

根据您提供的测试场景、现象描述及相关上下文信息,本文将对 openUBMC 在 AC Cycle 测试过程中出现 BCU 3V3_RISER2 电压传感器短暂误读的问题进行系统性分析,并结合知识库内容提出可能的原因和解决方向。


:magnifying_glass_tilted_left: 问题概述

  • 测试环境

    • 系统:openEuler 2203 SP4
    • BMC 版本:26.03.00.01(推测为基于 openUBMC 的定制版本)
    • BIOS 版本:20.60.21(发布于 2025-12-05)
    • 内核版本:5.10.0-216.0.0.115.oe2203sp4.aarch64
    • 硬件配置:未安装 RISER2 卡
  • 测试操作:执行 100 次 AC Cycle(断电重启)测试

  • 预期结果

    • BCU 3V3_RISER2 传感器应始终无读值(状态为 ns),因为无对应硬件;
    • 系统稳定运行,无告警,能正常开机进入操作系统。
  • 实际结果

    • 第一圈 AC Cycle 时读到有效电压值(如 3.36V)
    • 第二圈起变为 ns(无读数)
    • 图片中 sdr 输出显示第一时刻有值,sdr_now 显示当前无值,符合波动特征

:bar_chart: 现象分析:为何未安装 RISER 卡却出现读数?

:white_check_mark: 依据文档确认传感器配置逻辑

从知识库相关文档中提取关键信息:

《扩展板CSR配置指导书》(Document #3)明确指出:

“扩展板上需要定义AC上下电状态,关联Accessor传递的ac上下电状态值供BMC使用。”
示例配置如下:

"ACCycle_1": {
  "AC": "#/Accessor_AC.Value"
}

《CSR配置字典总览》(Document #9)也提到:

  • Debounce 类用于处理 AC循环、信号监控和事件处理
  • 传感器扫描依赖于 Scanner 对象对硬件状态的周期性采样

《板卡适配指南》(Document #7)说明:

  • Riser卡上的3V3电压需进行周期性扫描并配置告警
  • Scanner 配置决定了是否启用该传感器的监测

:warning: 初步结论:

若系统中 CSR 配置文件错误地启用了 BCU1 3V3_RISER2 传感器的 Scanner 通道,即使物理上无 RISER2 卡,BMC 在启动初期仍可能短暂采集到悬空或干扰信号,导致误读。


:puzzle_piece: 故障机理推测

1. 上电瞬态信号误触发

  • AC Cycle 第一次上电瞬间,电源尚未完全稳定,ADC 检测通道可能存在浮空电平或耦合噪声;
  • 若无硬件上拉/下拉保护或软件滤波机制,BMC 的 Scanner 可能将噪声误判为有效电压信号(如 3.36V);
  • 随着系统稳定,检测到连续异常或超时未确认,状态转为 ns(Not Supported/No Sensor)。

2. Scanner 初始化逻辑缺陷

  • 依据《基础板CSR配置指导书》(Doc #2):

    “软件对传感器进行扫描的条件(例如:电源传感器需要上电以后才开始扫描)”

  • 推测 BMC 在启动时未正确判断 RISER2 的存在状态(如未通过 Presence Pin 或 PCIe 插槽检测),直接启动了该通道的 Scanner;

  • 后续通过设备发现机制识别为“无卡”,遂关闭读值——表现为仅第一轮有值

3. ACCycle 行为与状态持久化问题

  • 知识图谱中的实体 ACCycle 被描述为:

    “ACCycle 是一个命令,用于控制 AC 电源循环……在某些上下文中状态报告为 ‘Unknown’。”

  • 关系表明:

    ACCycleFructrl_Component:用于测试电源策略恢复
    ACcycle TestBMC Web:多次 AC Cycle 后可能导致 Web 接口异常

  • 虽然未直接提及传感器误读,但表明 AC Cycle 是一个高优先级、可能影响底层状态初始化的操作序列,存在潜在配置同步延迟问题。


:hammer_and_wrench: 根本原因可能方向

可能原因 证据支持 来源依据
CSR 中错误启用了 RISER2 的 Scanner 若配置中未检查硬件存在即开启扫描,会导致误采样 Doc #3, #7, #9
缺少防抖(Debounce)机制或配置不当 瞬态电压未被过滤,导致首次读数错误 Doc #8(告警防抖策略)
AC 上电时序中传感器初始化顺序不合理 初期读取发生在硬件未完成自检前 Doc #2, KG: ACCycle Test
Accessor 未正确传递 RISER 卡存在状态 BMC 无法感知卡是否真实存在 Doc #3: "AC": "#/Accessor_AC.Value"

:white_check_mark: 解决建议

建议一:检查 CSR 配置中的 Scanner 定义

定位是否存在如下类似配置:

"Scanner_3V3_RISER2": {
  "SensorType": "Voltage",
  "ScanInterval": 1000,
  "Thresholds": { ... },
  "Accessor": "#/Accessor_RISER2_Present.Value"
}

:backhand_index_pointing_right: 修改方案

  • 添加 Presence 检测依赖,仅当 Accessor_RISER2_Present.Value == true 时启动扫描;
  • 或直接在无 RISER2 的机型中注释/移除该 Scanner 配置。

建议二:启用 Debounce 防抖机制

参考 《告警配置机制介绍》(Doc #8 中关于防抖的说明:

“通过配置 Scanner 对象的 Debounce 属性实现防抖。”

推荐设置:

"Debounce": {
  "StableTime": 2000,    // 至少2秒稳定才认定为有效
  "RetryCount": 3        // 连续三次一致读数才更新
}

建议三:优化 Sensor 初始化策略

确保:

  1. 所有 Riser 相关传感器在 完成硬件 Presence 检测后再注册
  2. 使用 mdbctl 工具验证启动过程中的属性加载顺序:
mdbctl lsprop Scanner_3V3_RISER2
mdbctl lsprop Accessor_RISER2_Present

查看其值变化时机,确认是否存在“先读值、后判存”的逻辑错位。


建议四:更新至新版本 openUBMC

您当前使用的是 BMC 26.03.00.01,而知识库中提及最新支持特性版本为:

OpenUBMC 25.3.0.B002(KG Entity)

  • 支持 Atlas 300 Duo Card 的完整传感器显示
  • 已修复多个传感器-告警对齐问题

建议核实此版本是否已包含相关 Sensor 扫描优化补丁,并评估升级可行性。


:pushpin: 总结

项目 内容
问题本质 BMC 在 AC Cycle 启动初期误读了未安装硬件的传感器电压
主要原因 CSR 配置不当 + 缺乏 Presence 检测 + 无防抖机制
关键路径 AC Power OnScanner 启动ADC 读取浮空电压误识别为有效值后续检测失败 → ns
解决方案 1. 校正 CSR 配置
2. 增加 Presence 条件控制
3. 启用 Debounce 防抖
4. 升级 BMC 固件

:white_check_mark: 建议下一步动作

  1. 检查 BCURiser 相关 CSR 文件中 3V3_RISER2 的 Scanner 配置;
  2. 使用 mdbctl 抓取启动阶段的属性状态流;
  3. 提交 issue 至 OpenUBMC 社区论坛 并附上日志;
  4. 联系维护人员确认是否已有类似问题修复(可参考 topic_id 16982994)。

如需进一步分析配置文件或日志,请提供 CSR 中与 3V3_RISER2Scanner 相关的部分。

有问题日志吗


你好 我目前没有上传附件的权限 请问能否提供一个邮箱 我通过邮箱给你发送日志

发送你了

你好,请查收邮件

根据csr配置,数据来源Scanner_3v2为基础板SMC上报,建议联系相关硬件同事排查