ベースボード管理コントローラ メッセージ

ベースボード管理コントローラ メッセージ

ベースボード管理コントローラ(BMC)は、システム イベント ログ(SEL)に対するインターフェイスを提供します。SEL にはシステム側および他の外部インターフェイスからアクセスできます。BMC ではメッセージ ハンドラを使用して、異なるインターフェイス間でメッセージをルーティングします。また、温度および電圧など、システム ボードをモニターおよび管理します。

SEL Device

SEL はシステム イベントの不揮発性リポジトリです。SEL のデバイスはイベント レシーバ デバイスとは別個のもので、内容を管理するコマンドを受け入れます。

SEL イベントのレコード形式

SEL のメッセージは、メッセージをトリガーした変更に関する情報が含まれる 16 バイトの文字列として記録されます。

  • バイト 1 および 2 はレコード ID です。

  • バイト 3 はレコード タイプです。

  • バイト 4、5、6、および 7 はタイムスタンプです。

  • バイト 8 および 9 はジェネレータ ID です。

  • バイト 10 はイベント メッセージ形式のバージョンです。

  • バイト 11 はセンサー タイプです。

  • バイト 12 はセンサー番号です。

  • バイト 13 はイベント ディレクトリ(アサーション/アサーション解除イベント)またはイベント タイプです。

  • バイト 14、15、および 16 はイベント データ フィールドの内容へのリンクです。センサー クラスがしきい値、ディスクリート、Original Equipment Manufacturer(OEM)の設定のうちどれに関するものであるかを決定します。

センサー初期化エージェント

センサー初期化エージェントは論理デバイスではありませんが、SDR 情報の処理に固有の機能とサービスの集まりです。センサー初期化エージェントは、SDR の内容(特にセンサー データ レコードとデバイス ロケータ レコード)を直接処理します。

エージェントは、システムの起動時にセンサーおよび IPMB デバイスの初期化に SDR 情報を使用します。エージェントは、センサー データ レコードを解釈し、init required フィールドの値に従ってしきい値を threshold initialization required ビットが SDR レコードで設定されているセンサーにロードします。レコードの他のビットは、エージェントにセンサーや、センサーかイベントがディセーブル(または両方がディセーブル)の状態で起動されたデバイスをイネーブルにするように指示します。

エージェント機能は、システムの起動時および任意のシステム ハード リセット時に実行されます。BMC が初めてスタンバイ電源を受信したときにエージェント機能を実行することを推奨します。

電源管理を実装するシステムでは、システムが起動した後に、システム管理ソフトウェアで、中間設定を復元するための追加手順が必要となります。

センサー データ レコード デバイス

センサー データ レコード(SDR)デバイスはセンサー データ レコードへのインターフェイスを提供します。コマンド セットによって、センサー データ レコードを保存および取得します。SDR デバイスはセンサーを検出して設定し、アクセスするためのコマンド セットを提供します。

SDR リポジトリのインターフェイス

SDR リポジトリはプラットフォーム管理サブシステムのすべてのセンサーに対して、センサー、デバイス ロケータおよびエンティティ アソシエーション レコードを保持しています。BMC は SDR リポジトリにこのインターフェイスを提供します。センサー データ レコードは、SDR コマンドを使用してアクセスできます。

モーダルおよび非モーダルの SDR リポジトリ

SDR リポジトリには、モーダルおよび非モーダルという 2 つの実装があります。

モーダル SDR リポジトリは、コントローラが SDR リポジトリ更新モードの場合にのみ更新されます。SDR 情報は不揮発性ストレージ デバイスに保存されます。更新中に長い書き込み処理が必要となる場合があり、他のコントローラ動作を妨げる可能性のあります。たとえば、SDR リポジトリは、管理コントローラ コードの一部を保持するフラッシュ デバイスに保存できます。モーダル SDR リポジトリ実装では、そのコードに関連付けられた機能を更新プロセス中に一時的に使用不能にすることができます。

非モーダル SDR リポジトリにはいつでもに書き込むことができます。SDR への書き込みは管理コントローラの他のコマンドの動作に影響しません。

イベント レシーバ デバイス

イベント メッセージは、重大なまたは重要なシステム管理イベントを検出すると管理コントローラに送信される特殊なメッセージです。これには、温度しきい値の超過、電圧しきい値の超過、電源障害などのイベントに関するメッセージが含まれます。イベント メッセージを生成するデバイスはイベント レシーバ デバイスにメッセージを送信することによって、システムに通知します。

イベント レシーバ デバイスからのメッセージは、システム イベント ログに直接書き込まれます。適切な Add SEL Entry コマンドは SEL デバイスに直接送信されます。

BMC コマンド

SEL、SDR、およびイベント コマンドは、これらのコマンド セットが実装されているデバイスがメッセージの内容から分離されように設計されています。デバイスは、メッセージを解釈しません。イベント レシーバ デバイスはイベント メッセージを受信し、ルーティングします。SEL デバイスは、ログ エントリを取得し、保存します。SDR デバイスは、センサー データ レコードを取得し、保存します。

SEL デバイス コマンド

以下に、使用可能な SEL デバイス コマンドを示します。

表 1. SEL デバイス コマンド

コマンド

説明

Get SEL Info

このコマンドは、SEL のエントリ数、SEL コマンドのバージョン、および最新のエントリと削除/クリアのタイムスタンプを返します。

Get SEL Allocation Info

このコマンドは、可能性のあるアロケーション ユニット数、使用可能な空き容量(アロケーション ユニット単位)、アロケーション ユニット サイズ(バイト単位)、および連続する空き領域の最大サイズ(アロケーション ユニット単位)を返します。アロケーション ユニットのサイズは、ストレージが割り当てられているバイト数です。たとえば 16 バイトのレコードが追加され、SEL のアロケーション ユニット サイズが 32 バイトの場合、レコードは 32 バイトのストレージを占有します。

Reserve SEL

このコマンドは、SEL の現在のオーナーを設定し、これは、ソフトウェア ID またはコマンドからの要求者スレーブ アドレスで識別されます。予約処理は、レコードの削除中または段階的な読み取り中に、インテリジェント プラットフォーム管理インターフェイス(IPMB)からのリポジトリ アクセスに対して一定の保護を提供します。

Get SEL Entry

このコマンドは、SEL からエントリを取得します。応答のレコード データ フィールドは SEL イベント レコードから 16 バイトのデータを返します。

Add SEL Entry

このコマンドは、BIOS でシステム イベント ログにレコードを追加できるようにします。通常、SEL デバイスおよびイベント レシーバ サービスは同じ管理コントローラに組み込まれます。この場合、BIOS またはシステム SMI ハンドラは、このコマンドを使用するのではなく、イベント メッセージをフォーマットし、SEL デバイスに送信することにより、各自のイベントを SEL に追加します。

Partial Add SEL Entry

このコマンドは、Add SEL Entry の 1 つのバージョンです。レコードが段階的に SEL に追加されるようにします。このコマンドの前に、Reserve SEL コマンドを実行する必要があります。最初の部分追加をオフセット 0000h にし、以後の部分追加を追加間のギャップまたはオーバーラップなしで順番に実行する必要があります。

Delete SEL Entry

このコマンドは、SEL の指定されたエントリを削除します。

Clear SEL

このコマンドは、SEL の内容を消去します。このプロセスは、ストレージ デバイスのタイプに基づいて、数秒かかることがあります。消去のステータスも表示されます。

Get SEL Time

このコマンドは、イベントのタイムスタンプに使用する時刻を SEL デバイスから返します。

Set SEL Time

このコマンドは、イベントのタイムスタンプに使用する SEL デバイスの時刻設定を初期化します。

Get Auxiliary Log Status

このコマンドは、リモート ソフトウェアで新しい情報がマシン チェック アーキテクチャ(MCA)ログに追加されたかどうかを認識できるようにします。MCA ログは Intel Itanium ベースのコンピュータ システムに実装できるストレージ エリアで、システム ファームウェアから実行されている MCA ハンドラからの情報を保持します。

Set Auxiliary Log Status

このコマンドは、システム ソフトウェアまたはファームウェアによって、Get Auxiliary Log Status コマンドから返されたステータスを設定するために使用できます。一部の実装では、このステータスを設定するために独自のメカニズムが使用されることがあります。その場合、Get Auxiliary Log Status コマンドが提供されても、このコマンドが提供されない可能性があります。

SDR リポジトリ デバイス コマンド

次のコマンドは、SDR リポジトリ デバイスの動作を制御します。

表 2. SDR リポジトリ デバイス コマンド

コマンド

説明

Get SDR Repository Info

このコマンドは、SDR リポジトリの SDR コマンドのバージョンを返します。また、最後 add、delete、または clear コマンドのタイムスタンプを返します。

Get SDR Repository Allocation Info

このコマンドは、可能性のあるアロケーション ユニット数、使用可能な空き容量(アロケーション ユニット単位)、アロケーション ユニット サイズ(バイト単位)、および連続する空き領域の最大サイズ(アロケーション ユニット単位)を返します。アロケーション ユニットのサイズは、ストレージが割り当てられているバイト数です。たとえば 20 バイトのレコードが追加され、SDR リポジトリのアロケーション ユニット サイズが 16 バイトの場合、レコードは 32 バイトのストレージを占有します。

Reserve SDR Repository

このコマンドは、ソフトウェア ID またはコマンドからの要求者スレーブ アドレスで識別される、リポジトリの現在のオーナーを設定します。予約処理は、レコードが削除されるか、段階的に読み取られる場合、IPMB からのリポジトリ アクセス時に一定の保護を提供します。

Get SDR

このコマンドは、レコード ID で指定したセンサー レコードを返します。コマンドは、レコードの選択した部分を取得できるバイト範囲の指定も受け入れます(差分読み取り)。まず、Reserve SDR Repository コマンドを 0000h 以外のオフセットへの差分読み取り用に発行する必要があります(他の SDR リポジトリ コマンドを送信する前に、Get SDR Repository Info コマンドを使用して、SDR リポジトリのバージョンを確認する必要があります。コマンド形式と動作はバージョン間で異なる場合があります)。

Add SDR

このコマンドは、SDR リポジトリに指定されたセンサー レコードを追加し、そのレコード ID を返します。要求で渡されるデータには、すべての SDR データを含める必要があります。

Partial Add SDR

このコマンドは、Add SDR の 1 つのバージョンで、レコードを段階的にリポジトリに追加できるようにします。このコマンドの前に、Reserve SDR Repository コマンドを実行する必要があります。最初の部分追加をオフセット 0000h にし、以後の部分追加を追加間のギャップまたはオーバーラップなしで順番に実行する必要があります。

Delete SDR

このコマンドは、レコード ID で指定したセンサー レコードを削除します。要求元 ID と予約 ID も SDR リポジトリのオーナーと一致している必要があります。

Clear SDR Repository

このコマンドは、SDR リポジトリからすべてのレコードをクリアし、SDR リポジトリ サブシステムを再初期化します。要求元 ID と予約 ID 情報が SDR リポジトリの現在のオーナーと一致している必要があります。このコマンドをユーティリティおよびシステム管理ソフトウェア内で使用しないことを推奨します。

Get SDR Repository Time

このコマンドは、SDR リポジトリ デバイスが SDR リポジトリへの変更のトラッキングに使用する時間設定を SDR リポジトリ デバイスから返します。

Set SDR Repository Time

このコマンドは、SDR リポジトリ デバイスが SDR リポジトリへの変更のトラッキングに使用する SDR リポジトリ デバイス内の時間設定を初期化します。

Enter SDR Repository Update Mode

このコマンドは、通常コマンドのサブセットを実行できるモードを開始します。使用できるコマンドは、Get Device IDGet SDRAdd SDRPartial Add SDR、および Clear SDR Repository です。

Exit SDR Repository Update Mode

このコマンドは、SDR リポジトリの更新モードを終了し、すべてのコマンドの通常の使用を復元します。

Run Initialization Agent

このコマンドにより、初期化エージェントを実行し、エージェントのステータスをチェックできます。

イベント レシーバ コマンド

次のコマンドは、イベント レシーバ デバイスで実行できます。

表 3. イベント レシーバ コマンド

コマンド

説明

Set Event Receiver

これは、コントローラにイベント メッセージの送信先を伝えるグローバル コマンドです。イベント レシーバのスレーブ アドレスおよび LUN を指定する必要があります。イベント レシーバのスレーブ アドレスの値 FFh は、イベント メッセージの生成をディセーブルにします。

Get Event Receiver

これは、イベント レシーバのスレーブ アドレスおよび LUN の現在の設定を取得するグローバル コマンドです。

Platform Event Message

このコマンドは、BMC に対する、コマンドに含まれるイベント データの処理要求です。データは、SEL に記録されます。

SEL レコードの例

SEL リポジトリに報告される例を次に示します。raw レコードには 16 バイトが含まれ、レコードは例で 16 進値として表示されています。矢印の後にデータの変換があります。| パイプは、変換を読みやすくするための区切り記号です。

デバイス存在の変化

これらは存在アサーションの例です。これは、ブートアップ プロセスを示しています。

54 01 02 3c 0c 00 00 01 00 04 12 83 6f 01 ff 00   ------------> 154 | 01/01/1970 00:52:12 | BIOS 
| System Event #0x83 | OEM System Boot Event |  | Asserted
55 01 02 3d 0c 00 00 20 00 04 25 53 08 01 ff ff   ------------> 155 | 01/01/1970 00:52:13 | BMC
  | Entity presence BIOS_POST_CMPLT #0x53 | Device Present | Asserted
56 01 02 54 0c 00 00 20 00 04 25 52 08 00 ff ff   ------------> 156 | 01/01/1970 00:52:36 | BMC
  | Entity presence MAIN_POWER #0x52 | Device Absent | Asserted
57 01 02 25 00 00 00 20 00 04 25 41 08 01 ff ff   ------------> 157 | 01/01/1970 00:00:37 | BMC
  | Entity presence MEZZ_PRS #0x41 | Device Present | Asserted
58 01 02 25 00 00 00 20 00 04 25 43 08 00 ff ff   ------------> 158 | 01/01/1970 00:00:37 | BMC
  | Entity presence HDD1_PRS #0x43 | Device Absent | Asserted
59 01 02 25 00 00 00 20 00 04 25 45 08 01 ff ff   ------------> 159 | 01/01/1970 00:00:37 | BMC
  | Entity presence P1_PRESENT #0x45 | Device Present | Asserted
5a 01 02 25 00 00 00 20 00 04 25 47 08 00 ff ff   ------------> 15a | 01/01/1970 00:00:37 | BMC
  | Entity presence DDR3_P2_D2_PRS #0x47 | Device Absent | Asserted
5b 01 02 25 00 00 00 20 00 04 25 49 08 00 ff ff   ------------> 15b | 01/01/1970 00:00:37 | BMC
  | Entity presence DDR3_P2_E2_PRS #0x49 | Device Absent | Asserted
5c 01 02 25 00 00 00 20 00 04 25 4b 08 00 ff ff   ------------> 15c | 01/01/1970 00:00:37 | BMC
  | Entity presence DDR3_P2_F2_PRS #0x4b | Device Absent | Asserted
5d 01 02 26 00 00 00 20 00 04 25 4d 08 00 ff ff   ------------> 15d | 01/01/1970 00:00:38 | BMC
  | Entity presence DDR3_P1_A2_PRS #0x4d | Device Absent | Asserted
5e 01 02 26 00 00 00 20 00 04 25 4f 08 00 ff ff   ------------> 15e | 01/01/1970 00:00:38 | BMC
  | Entity presence DDR3_P1_B2_PRS #0x4f | Device Absent | Asserted
5f 01 02 26 00 00 00 20 00 04 25 51 08 00 ff ff   ------------> 15f | 01/01/1970 00:00:38 | BMC
  | Entity presence DDR3_P1_C2_PRS #0x51 | Device Absent | Asserted
60 01 02 26 00 00 00 20 00 04 25 53 08 01 ff ff   ------------> 160 | 01/01/1970 00:00:38 | BMC
  | Entity presence BIOS_POST_CMPLT #0x53 | Device Present | Asserted

LED 色の変化

これらは、SEL リポジトリに書き込まれる LED カラーの変化の例です。

34 05 02 2f 00 00 00 20 00 04 24 56 7f 00 04 10   ------------> 534 | 01/01/1970 00:00:47 | BMC
  | Platform alert LED_MEZZ_TP_FLT #0x56 | LED is off | Asserted
35 05 02 30 00 00 00 20 00 04 24 56 7f 07 04 10   ------------> 535 | 01/01/1970 00:00:48 | BMC
  | Platform alert LED_MEZZ_TP_FLT #0x56 | LED color is red | Asserted
36 05 02 30 00 00 00 20 00 04 24 58 7f 00 04 10   ------------> 536 | 01/01/1970 00:00:48 | BMC
  | Platform alert LED_SYS_ACT #0x58 | LED is off | Asserted
37 05 02 31 00 00 00 20 00 04 24 58 7f 04 04 10   ------------> 537 | 01/01/1970 00:00:49 | BMC
  | Platform alert LED_SYS_ACT #0x58 | LED color is green | Asserted
38 05 02 31 00 00 00 20 00 04 24 5a 7f 00 04 10   ------------> 538 | 01/01/1970 00:00:49 | BMC
  | Platform alert LED_SAS1_FAULT #0x5a | LED is off | Asserted
39 05 02 32 00 00 00 20 00 04 24 5a 7f 05 04 10   ------------> 539 | 01/01/1970 00:00:50 | BMC
  | Platform alert LED_SAS1_FAULT #0x5a | LED color is amber | Asserted

電圧変化

これらは、電圧のしきい値を超えたときの SEL メッセージの例です。

7b 09 02 3d 19 00 00 20 00 04 02 00 01 52 b5 b7   ------------> 97b | 01/01/1970 01:47:41 | BMC
  | Voltage P3V_BAT_SCALED #0x00 | Lower critical - going low | Asserted | Reading 2.39 < Threshold 2.42 Volts
8d 09 02 5b 19 00 00 20 00 04 02 00 81 52 bc b7   ------------> 98d | 01/01/1970 01:48:11 | BMC
  | Voltage P3V_BAT_SCALED #0x00 | Lower critical - going low | Deasserted | Reading 2.48 > Threshold 2.42 Volts

温度変化

これらは、温度のしきい値を超えたときの SEL メッセージの例です。

00 02 02 2b 00 00 00 20 00 04 19 18 05 00 ff ff   ------------> 200 | 01/01/1970 00:00:43 | BMC
  | Chip Set IOH_THERMTRIP_N #0x18 | Limit Not Exceeded | Asserted
12 02 02 31 00 00 00 20 00 04 07 19 05 00 ff ff   ------------> 212 | 01/01/1970 00:00:49 | BMC
  | Processor P2_THERMTRIP_N #0x19 | Limit Not Exceeded | Asserted
13 02 02 32 00 00 00 20 00 04 07 1a 05 00 ff ff   ------------> 213 | 01/01/1970 00:00:50 | BMC
  | Processor P1_THERMTRIP_N #0x1a | Limit Not Exceeded | Asserted