oem-meta: santabarbara: add handler for event logs from rainbow MMC Add support for decoding the event logs emitted by the Rainbow MMC. To distinguish between MITA and Rainbow event formats, the function lookupFaultByIndex is updated so that it can retrieve the corresponding event type and provide the correct interpretation. This commit is base on 82142: oem-meta: Add file IO responder for event logs from BIC https://gerrit.openbmc.org/c/openbmc/pldm/+/82142 Tested by triggering MITA fault logs to verify correct event type handling. ``` "7": { "additional_data": { "FAILURE_DATA": "MTIA_PVDD1P5_S - [02 03]", "VOLTAGE_REGULATOR": "/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/pvdd1p5_s", "_CODE_FILE": "../../../../../../workspace/sources/pldm/oem/meta/libpldmresponder/file_io_type_event_log.cpp", "_CODE_FUNC": "void pldm::responder::oem_meta::recordEventLog(const FaultDesc&, EventAssert, const FaultData&)", "_CODE_LINE": "451", "_PID": "1267" }, "event_id": "", "message": "xyz.openbmc_project.State.Power.VoltageRegulatorFault", "redfish": { "args": [ "/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/pvdd1p5_s" ], "id": "OpenBMC_StatePower.VoltageRegulatorFault", "message": "A fault has been detected on voltage regulator '/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/pvdd1p5_s'" }, "resolution": "", "resolved": false, "severity": "xyz.openbmc_project.Logging.Entry.Level.Error", "timestamp": "2026-01-26T05:38:09.990000000Z", "updated_timestamp": "2026-01-26T05:38:09.990000000Z" } } ``` Tested by triggering Rainbow fault logs to verify correct event type handling. ``` "86": { "additional_data": { "FAILURE_DATA": "RAINBOW_OWL_E_TRVDD0P75 - [7C 00]", "VOLTAGE_REGULATOR": "/xyz/openbmc_project/inventory/system/board/Santabarbara_Rainbow_0/owl_e_trvdd0p75", "_CODE_FILE": "../../../../../../workspace/sources/pldm/oem/meta/libpldmresponder/file_io_type_event_log.cpp", "_CODE_FUNC": "void pldm::responder::oem_meta::recordEventLog(const FaultDesc&, EventAssert, const FaultData&)", "_CODE_LINE": "439", "_PID": "1038" }, "event_id": "", "message": "xyz.openbmc_project.State.Power.VoltageRegulatorFault", "redfish": { "args": [ "/xyz/openbmc_project/inventory/system/board/Santabarbara_Rainbow_0/owl_e_trvdd0p75" ], "id": "OpenBMC_StatePower.VoltageRegulatorFault", "message": "A fault has been detected on voltage regulator '/xyz/openbmc_project/inventory/system/board/Santabarbara_Rainbow_0/owl_e_trvdd0p75'" }, "resolution": "", "resolved": false, "severity": "xyz.openbmc_project.Logging.Entry.Level.Error", "timestamp": "2025-11-26T01:34:28.595000000Z", "updated_timestamp": "2025-11-26T01:34:28.595000000Z" } ``` Change-Id: Ie5d6e6fe26baf1cb7c23d19127d0d84f66f37c27 Signed-off-by: Henry Wu <Henry_Wu@quantatw.com> Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
PLDM (Platform Level Data Model) is a key component of the OpenBMC project, providing a standardized data model and message formats for various platform management functionalities. It defines a method to manage, monitor, and control the firmware and hardware of a system.
The OpenBMC PLDM project aims to implement the specifications defined by the Distributed Management Task Force (DMTF), allowing for interoperable management interfaces across different hardware and firmware components.
To build and run PLDM, you need the following dependencies:
MesonNinjaAlternatively, source an OpenBMC ARM/x86 SDK.
To build the PLDM project, follow these steps:
meson setup build && meson compile -C build
The simplest way of running the tests is as described by the meson man page:
meson test -C build
Alternatively, tests can be run in the OpenBMC CI docker container using these steps.
pldm daemon accepts a command line argument --verbose or --v or -v to enable the daemon to run in verbose mode. It can be done via adding this option to the environment file that pldm service consumes.
echo 'PLDMD_ARGS="--verbose"' > /etc/default/pldmd systemctl restart pldmd
rm /etc/default/pldmd systemctl restart pldmd
For complete documentation on the functionality and usage of this repository, please refer to the docs folder.