用於衛星 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 完成資料傳輸,則需要如上定義“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,使用者空間程式可以訪問該檔案。 在執行使用者空間程式之前,需要例項化該裝置。