卫星 MC 的 IPMB 驱动程序¶
智能平台管理总线或 IPMB 是一种 I2C 总线,它提供机箱内不同板卡之间的标准化互连。此互连在基板管理 (BMC) 和机箱电子设备之间。IPMB 还通过 IPMB 总线与消息传递协议相关联。
使用 IPMB 的设备通常是管理控制器,它们执行管理功能,例如为前面板接口提供服务、监视基板、在系统机箱中热插拔磁盘驱动器等...
当在系统中实现 IPMB 时,BMC 用作控制器,以使系统软件可以访问 IPMB。BMC 通过 IPMB 向设备(通常是卫星管理控制器或卫星 MC)发送 IPMI 请求,设备将响应发送回 BMC。
有关 IPMB 和 IPMB 消息格式的更多信息,请参阅 IPMB 和 IPMI 规范。
卫星 MC 的 IPMB 驱动程序¶
ipmb-dev-int - 这是卫星 MC 上所需的驱动程序,用于接收来自 BMC 的 IPMB 消息并发送响应。此驱动程序与 I2C 驱动程序和用户空间程序(如 OpenIPMI)配合使用
它是一个 I2C 从后端驱动程序。因此,它定义了一个回调函数,将卫星 MC 设置为 I2C 从设备。此回调函数处理接收到的 IPMI 请求。
它定义了读取和写入函数,以使用户空间程序(如 OpenIPMI)能够与内核通信。
加载 IPMB 驱动程序¶
驱动程序需要在启动时或手动首先加载。首先,请确保您的配置文件中包含以下内容:CONFIG_IPMB_DEVICE_INTERFACE=y
如果您希望在启动时加载驱动程序
将此条目添加到您的 ACPI 表中,在适当的 SMBus 下
Device (SMB0) // Example SMBus host controller { Name (_HID, "<Vendor-Specific HID>") // Vendor-Specific HID Name (_UID, 0) // Unique ID of particular host controller : : Device (IPMB) { Name (_HID, "IPMB0001") // IPMB device interface Name (_UID, 0) // Unique device identifier } }
设备树示例
&i2c2 { status = "okay"; ipmb@10 { compatible = "ipmb-dev"; reg = <0x10>; i2c-protocol; }; };
如果要使用原始 i2c 块而不是 smbus 完成数据 xmit,则需要如上定义“i2c-protocol”。
从 Linux 手动
modprobe ipmb-dev-int
实例化设备¶
加载驱动程序后,您可以按照“如何实例化 I2C 设备”中的描述实例化该设备。如果您有多个 BMC,每个 BMC 通过不同的 I2C 总线连接到您的卫星 MC,您可以为每个 BMC 实例化一个设备。
实例化的设备的名称包含与其关联的 I2C 总线号,如下所示
BMC1 ------ IPMB/I2C bus 1 ---------| /dev/ipmb-1
Satellite MC
BMC1 ------ IPMB/I2C bus 2 ---------| /dev/ipmb-2
例如,您可以从用户空间在总线 2 上以 7 位地址 0x10 实例化 ipmb-dev-int 设备
# echo ipmb-dev 0x1010 > /sys/bus/i2c/devices/i2c-2/new_device
这将创建设备文件 /dev/ipmb-2,用户空间程序可以访问该文件。在运行用户空间程序之前,需要实例化该设备。