Baseboard Management Controller Messages
The Baseboard Management Controller (BMC) provides the interface to the System Event Log (SEL). The SEL can be accessed from the system side as well as from other external interfaces. The BMC uses a message handler to route messages between the different interfaces. It also monitors and manages the system board, including temperatures and voltages.
SEL Device
The SEL is a nonvolatile repository for system events. The SEL device is separate from the event receiver device and accepts commands to manage the contents.
This section includes the following topics:
SEL Event Record Format
The SEL messages are logged as a 16 byte string that contains the information about the change that triggered the message.
- Byte 1 and 2 is the record ID.
- Byte 3 is the record type.
- Bytes 4, 5, 6, and 7 is the timestamp
- Bytes 8 and 9 is the generator ID.
- Byte 10 is the version of the event message format.
- Byte 11 is the sensor type.
- Byte 12 is the sensor number.
- Byte 13 is either the event dir (assertion/deassertion event) or the event type.
- Byte 14, 15, and 16 are links to the event data field contents and determines whether the sensor class is about threshold, discrete, or original equipment manufacturer (OEM) settings.
Sensor Initialization Agent
The Sensor Initialization Agent is not a logical device, but a collection of functions and services specific to handling SDR information. The Sensor Initialization Agent works directly with the content of SDRs, in particular, with the sensor data records and the device locator records.
The agent uses the SDR information for sensor and IPMB device initialization during system startup. The agent interprets sensor data records and is directed by the init required fields to load thresholds to sensors that have the threshold initialization required bit set in the SDR records. Other bits in the record direct the agent to enable sensors and devices that come up with sensors, events, or both disabled.
The agent function runs at system power-up and at any system hard resets. We recommend that you run the agent function when the BMC first receives standby power.
In systems that implement power management, the system management software takes additional steps to restore intermediate settings after the system has powered up.
Sensor Data Record Device
The Sensor Data Record (SDR) device provides the interface to the sensor data records. A set of commands store and retrieve sensor data records. The SDR device provides a set of commands for discovering, configuring, and accessing sensors.
This section includes the following topics:
SDR Repository Interface
The SDR repository holds sensor, device locator, and entity association records for all sensors in the platform management subsystem. The BMC provides this interface to the SDR repository. The sensor data records can be accessed by using SDR commands.
Modal and Nonmodal SDR Repositories
There are two SDR repository implementations: modal and nonmodal.
A modal SDR repository is only updated when the controller is in SDR repository update mode. SDR information is kept in nonvolatile storage devices. Lengthy write operations during update can be required, which can interfere with other controller operations. For example, the SDR repository can be stored in a flash device that also holds a portion of the management controller code. A modal SDR repository implementation allows the functions associated with that code to be temporarily unavailable during the update process.
A nonmodal SDR repository can be written to at any time. Writing to the SDR does not impact the operation of other commands in the management controller.
Event Receiver Device
Event messages are special messages sent to management controllers when they detect significant or critical system management events. This includes messages for events such as temperature threshold exceeded, voltage threshold exceeded, power fault, and so on. The device generating an event message notifies the system by sending the message to the event receiver device.
Messages from the event receiver device are directly written into the system event log. The appropriate Add SEL Entry command is sent directly to the SEL device.
BMC Commands
SEL, SDR, and event commands are designed so that the devices that implement those command sets are isolated from the contents of the message. The devices do not interpret the messages. The event receiver device receives and routes event messages. The SEL devices retrieve and store log entries. The SDR devices retrieve and store sensor data records.
This section includes the following topics:
SEL Device Commands
Get SEL Info
This command returns the number of entries in the SEL, the SEL command version, and the timestamp for the most recent entry and delete or clear.
Get SEL Allocation Info
This command returns the number of possible allocation units, the amount of usable free space (in allocation units), the allocation unit size (in bytes), and the size of the largest contiguous free region (in allocation units). The allocation unit size is the number of bytes in which storage is allocated. For example, if a 16 byte record is to be added, and the SEL has a 32 byte allocation unit size, the record takes up 32 bytes of storage.
Reserve SEL
This command sets the present owner of the SEL, as identified by the software ID or by the requester slave address from the command. The reservation process provides a limited amount of protection at repository access from the Intelligent Platform Management Interface (IPMB) when records are being deleted or incrementally read.
Get SEL Entry
This command retrieves entries from the SEL. The record data field in the response returns the 16 bytes of data from the SEL event record.
Add SEL Entry
This command enables the BIOS to add records to the system event log. Normally, the SEL device and the event receiver service are incorporated into the same management controller. In this case, BIOS or the system SMI handler adds its own events to the SEL by formatting an event message and sending it to the SEL device rather than by using this command.
Partial Add SEL Entry
This command is a version of the Add SEL Entry command. It allows the record to be incrementally added to the SEL. This command must be preceded by a Reserve SEL command. The first partial add must be to offset 0000h, and subsequent partial adds must be done sequentially, with no gaps or overlap between the adds.
Delete SEL Entry
Clear SEL
This command erases the SEL contents. This process can take several seconds, based on the type of storage device. The command also shows the status of the erasure.
Get SEL Time
This command returns the time from the SEL device,which uses it for event timestamps.
Set SEL Time
This command initializes the time setting in the SEL device, which uses it for event timestamps.
Get Auxiliary Log Status
This command allows remote software to know whether new information has been added to machine check architecture (MCA) log. The MCA log is a storage area that can be implemented in Intel Itanium-based computer systems and holds information from an MCA handler running from system firmware.
Set Auxiliary Log Status
This command can be used by system software or firmware to set the status returned by the Get Auxiliary Log Status command. Some implementations mght use a private mechanism to set this status, in which case this command can not be provided even if the Get Auxiliary Log Status command is provided.
SDR Repository Device Commands
The following commands control the SDR repository device actions:
Get SDR Repository Info
This command returns the SDR command version for the SDR repository. It also returns a timestamp for the last add, delete, or clear commands.
Get SDR Repository Allocation Info
This command returns the number of possible allocation units, the amount of usable free space (in allocation units), the allocation unit size (in bytes), and the size of the largest contiguous free region (in allocation units). The allocation unit size is the number of bytes in which storage is allocated. For example, if a 20 byte record is to be added, and the SDR repository has a 16 byte allocation unit size, then the record would take up 32 bytes of storage.
Reserve SDR Repository
This command sets the present owner of the repository, as identified by the software ID or the requester slave address from the command. The reservation process provides a limited amount of protection on repository access from the IPMB when records are being deleted or incrementally read.
Get SDR
This command returns the sensor record specified by the record ID. The command also accepts a byte range specification that allows a selected portion of the record to be retrieved (incremental read). The Reserve SDR Repository command must be issued first for an incremental read to an offset other than 0000h. (The Get SDR Repository Info command should be used to verify the version of the SDR repository before sending other SDR repository commands. The command format and operation could change between versions.)
Add SDR
This command adds the specified sensor record to the SDR repository and returns its record ID. The data passed in the request must contain all of the SDR data.
Partial Add SDR
This command is a version of the Add SDR command that allows the record to be incrementally added to the repository. This command must be preceded by a Reserve SDR Repository command. The first partial add must be to offset 0000h, and partial adds must be done sequentially, with no gaps or overlap between the adds.
Delete SDR
This command deletes the sensor record specified by record ID. The requester ID and the reservation ID must also match the owner of the SDR repository.
Clear SDR Repository
This command clears all records from the SDR repository and reinitializes the SDR repository subsystem. The requestor ID and reservation ID information must match the present owner of the SDR repository. We recommend that this command not be used within your utilities and system management software.
Get SDR Repository Time
This command returns the time setting from the SDR repository device, which the SDR repository devices uses for tracking when changes to the SDR repository are made.
Set SDR Repository Time
This command initializes the time setting in the SDR repository device, which the SDR repository devices uses for tracking when changes to the SDR repository are made.
Enter SDR Repository Update Mode
This command enters a mode that allows a subset of normal commands. Available commands are Get Device ID, Get SDR, Add SDR, Partial Add SDR and Clear SDR Repository.
Exit SDR Repository Update Mode
This command exits the SDR repository update mode and restores normal use of all commands.
Run Initialization Agent
This command runs the initialization agent and can also check the status of the agent.
Event Receiver Commands
The following commands can be executed on the event receiver device:
Set Event Receiver
This is a global command to tell a controller where to send event messages. The slave address and LUN of the event receiver must be provided. A value FFh for the event receiver slave address disables the generation of event messages.
Get Event Receiver
This is a global command to retrieve the present setting for the event receiver slave address and LUN.
Platform Event Message
This command is a request for the BMC to process event data that the command contains. The data is logged to the SEL.
SEL Record Examples
Examples that are reported to the SEL Repository are provided here. The raw record contains 16 bytes and are dislayed in the examples as hexadecimal values. Following the arrow is the translation of the data. The |-pipes are separators for ease of reading the translation.
The following topics are included:
Device Presence Changes
These are examples of presence assertions. This shows a boot-up process.
LED Color Changes
These are examples of LED color changes written into the SEL Repository.
Voltage Changes
These are examples of SEL messages when voltage thresholds are crossed.
Temperature Changes
These are examples of SEL messages when temperature thresholds are crossed.