fw-update: Notify UpdateManager on response decode failure DeviceUpdater response handlers follow a common pattern: if response is null, the decoder fails, or the completion code is non-zero, the device cannot complete the update and the handler logs an error and returns. The null-response and completion-code paths correctly notify UpdateManager via updateDeviceCompletion(), but the decode-failure path silently returns, leaving the software object in InProgress state indefinitely. Add updateDeviceCompletion(eid, false) calls to four decode failure paths so the state machine correctly transitions to failure: - requestUpdate() (decode_request_update_resp) - passCompTable() (decode_pass_component_table_resp) - updateComponent() (decode_update_component_resp) - activateFirmware() (decode_activate_firmware_resp) cancelUpdateComponent() is intentionally left unchanged because it is the cleanup path for an already-failed update. Reported-by: Vishnunithyasoundhar S (on Gerrit 87785 PS8) Tested: E2E on Renode evb-ast2600-renode with malformed UpdateComponent response injection — pldmd correctly logs decode failure and calls updateDeviceCompletion(eid, false). Robot test "Should Handle Malformed Update Component Response" passes. clang-format clean, Docker CI builds cleanly. Change-Id: Ie04b385abcb86f5fb815cfddb6ec95bca053a19f Signed-off-by: Gary Beihl <garybeihl@microsoft.com>
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.