openUBMC IPMB总线异常自动切换的原理是什么

问题描述

IPMI协议中,IPMB具有主备功能,某一总线异常后会自动切换到另一总线,这个机制在openUBMC中是自动实现的还是需要个人开发?

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

BMC的IPMB通道目前应该是不具备主备功能的。每条总线都是独立的IPMB通道,连接不通的设备,如果总线出现问题,那设备之间就通信不了了。

您好,感谢回复,我们想通过I2C2/I2C3外接设备实现IPMB协议,I2C2/I2C3互为备份,从端IIC地址为134,这是硬件框图

我在EXU_01.sr中,I2C_2和I2C_3接口下分别连接Chip_IPMB,

Chip_IPMB地址设置为134,同时注册scanner和Accessor

platform.sr中设置IPMB_bus和IPMIChannel

至此,vpd硬件拓扑关系配置完成,之后在sensor/mds/ipmi.json中配置传输指令并通过bingo gen生成代码框架,这个操作对吗

我想执行扩展指令并通过IIC和其他设备交互,我执行下面的操作,但是总线没有打印,

之后注册cb函数

image

之后通过AI生成执行函数,函数实现发送netfn:0x2e cmd:0x32指令,从设备接收到指令后返回对应的信息,下图为执行流程

编译正确后,烧录板卡,通过ipmitool raw 0x2e 0x32触发交互,没有信息,IIC总线上也没有信号,我这个流程对吗,需要改哪里?

或者我怎么能实现一条IIC总线执行IPMB协议呢

你的这个问题会复杂一点,如果不是那么着急的话,请报一下议题,在下次的bmc-core SIG例会进行讨论。

建议按照如下流程进行适配:

  1. 首先确认硬件管脚服用,需要将iic2、iic3对应的管脚服用为IPMB,有两种方式:a) 与PAE联系,SDK适配对应单板的对应管脚复用(通常是通过board id进行管理某个产品的配置) b) 使用SDK的命令字在应用层配置管脚服用,对应命令字为:COMM_CMD_IOCFG_CONFIG。
  2. 后续IPMB的配置就和历史机型的IPMB配置一样了,可以参考历史机型的配置,也可以查看ipmi_mgmt组件的通道初始化、数据收发处理了解对应的用法。

IPMB 热备份的两条总线自动切换功能参考例程哪里有呢?单条IPMB总线通信现在没问题了

目前应该没有实现双总线互为备份的机制,所以没有参考例程,ipmi_mgmt组件现已开源,可以基于开源组件开发新特性,重点需要考虑清楚:

  1. 通过什么状态判断总线异常
  2. 切换场景的可靠性处理
  3. 扩展性如何考虑