OS下电后存在日志刷屏问题分析
更新时间: 2026/05/26
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.03;
- 涉及功能:OS下电,日志记录;
- 触发条件:OS侧执行下电操作,查看BMC记录的日志;
- 业务表现:预期正常打印日志无日志刷屏现象;实际出现刷屏日志。
问题复现步骤
OS侧执行下电操作,一键收集后查看BMC侧记录的日志。
关键日志信息
app.log日志截图如下:
定位过程
根据app.log日志查找代码进行分析,发现函数register_get_pcie_info_task会一直调用pcie_card_obj:get_pcie_lang_info(device_obj)去获取属性LinkWidth,LinkWidthAbility,get_pcie_lang_info调用pcie_get_capid_addr函数,调用失败则打印日志
```text
log:error("get_pcie_lang_info: get cap id addr failed.");
```
pcie_get_capid_addr调用get_pcie_info_from_ipmi函数,调用失败则打印日志
text
log:error("pcie_get_capid_addr: failed to get first cap id.");get_pcie_info_from_ipmi函数发送ipmi命令失败后会打印日志
text
log:error('get pci register info failed, error: %s', result)。刷屏日志对应error级别日志是否在异常情况下必须循环打印以方便问题定位,必须打印,则该问题为非问题,不是必须打印,则可考虑将该日志级别进行降级处理。
问题原因
OS下电,pcie_device组件函数执行异常后,循环打印error级别日志,导致的日志刷屏。
解决方案
经确认,该函数仅存在协助定位功能,可将error级别日志打印降级到debug,定位问题时可attach到pcie协助定位问题即可。具体代码修改如下: