IPMI 字符接口与消息通路

IPMI 字符接口与消息通路

1. 分层

1
2
3
4
5
userspace /dev/ipmiN
-> IPMI device interface
-> message handler
-> SI(KCS/SMIC/BT) / SSIF / other transport
-> BMC

Message handler负责user、sequence、request/response匹配、event和watchdog/poweroff client协调。

2. 核心对象

  • IPMI SMI实例;
  • ipmi_user
  • receive message;
  • sequence table;
  • SMI handler callbacks;
  • maintenance mode和watcher。

Transport注册到message handler后,device interface创建字符node。

3. 用户接口

/dev/ipmiN主要通过ioctl:

  • 设置/获取本地地址;
  • send command;
  • receive message/event;
  • register command;
  • 设置event接收;
  • timing/retry参数。

Read/write并非普通字节流协议,应用应使用OpenIPMI或规范结构。

4. 消息路径

1
2
3
4
5
6
7
8
9
ioctl SEND_COMMAND
-> allocate request/sequence
-> format netfn/cmd/address
-> lower-layer sender
-> KCS/SMIC/BT/SSIF transaction
-> response callback
-> match sequence
-> enqueue user receive queue
-> poll/read ioctl wakeup

Timeout可能触发retry;late response必须避免匹配到已复用sequence。

5. SI

System Interface支持KCS、SMIC、BT等BMC寄存器协议。状态机可能在IRQ、timer或polling中推进,单次寄存器操作不能阻塞完整命令周期。

6. SSIF

SSIF通过SMBus/I2C发送IPMI message,受adapter传输长度、multipart消息、clock stretching和BMC busy影响。

它与TPM I2C是不同协议和设备。

7. Watchdog边界

IPMI watchdog在本目录实现,但向Linux watchdog语义提供BMC watchdog。它与drivers/watchdog中的SoC watchdog不同:

  • BMC可能独立于SoC;
  • timeout/action由IPMI命令配置;
    -主机总线故障可能导致无法ping;
  • reboot/power cycle语义不同。

RK3588本地DW watchdog不走IPMI。

8. Poweroff

IPMI poweroff可向BMC发送chassis control。在无BMC或BMC不响应时不能作为唯一可靠关机路径。

9. 并发

  • message handler锁保护interface/user/sequence;
  • per-user queue配waitqueue;
  • transport状态机有自身spinlock/timer;
  • unregister需完成pending messages为error;
  • callback不能使用已释放user。

10. 安全

IPMI通常拥有高权限:

  • reset/power;
    -传感器和FRU;
  • BMC网络配置;
  • raw OEM命令;
  • firmware更新。

/dev/ipmiN应只给受信管理服务,容器默认不可见。BMC协议和固件也属于独立攻击面。

11. RK3588

Rockchip主要defconfig未显式启用IPMI,常见RK3588板也没有BMC KCS/SSIF节点。服务器化定制板若增加BMC,需按实际transport、DTS/ACPI和最终.config判断。

12. 调试

1
2
3
4
ls -l /dev/ipmi*
dmesg | grep -i ipmi
ipmitool mc info
ipmitool sensor

传输timeout时区分BMC无响应、I2C/KCS硬件问题、sequence耗尽和权限错误。

文章互动

阅读 --

留言

0 条留言

正在加载留言…