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协助定位问题即可。具体代码修改如下: