| commit | 6a3f9906a774644a8f0ca2978a81b769e948206f | [log] [tgz] |
|---|---|---|
| author | P Arun Kumar Reddy <arunpapannagari23@gmail.com> | Wed Mar 26 10:23:06 2025 +0530 |
| committer | Deepak Kodihalli <deepak.kodihalli.83@gmail.com> | Thu Oct 23 04:53:47 2025 +0000 |
| tree | 2f4959ec9bcb4a267eb21f3d9125af12d418827a | |
| parent | 05d15a06fe6c3aed1a940b557d723921f912dc28 [diff] |
fw-update: Add StartUpdate D-Bus API support for firmware updates This commit adds support for the StartUpdate D-Bus API to enable FW updates through the xyz.openbmc_project.Software.Update interface. The user would need to enable `fw-update-pkg-inotify` meson option to switch to inotify mechanism. The existing inotify mechanism has critical limitations: - Race condition between a BMC code updater and PLDM updater when accessing images from /tmp/images directory - Lack of a standard D-Bus interface for firmware operations - No proper error handling or status reporting This implementation follows the upstream design for device & component level inventory & update, based on the proposed code-update design document [1]. The FW Update is triggered at the top-level i.e. all valid targets will be updated with a single StartUpdate call. Key changes: - Add Update class implementing the Software.Update D-Bus interface - Add startUpdate method that accepts file descriptors and processes firmware packages via streams - Refactor UpdateManager to support both file path and stream-based package processing Tests: - Successful FW Update with both inotify and startUpdate flows on gb200nvl-obmc platform with multiple components (GPU + SMA) - FW Update failure case by modifying the package size. The Redfish task immediately fails with Exception after creation. [1]: https://gerrit.openbmc.org/c/openbmc/docs/+/76645 Change-Id: Ic2ca74431316161de844f6a3966f612760f5c298 Signed-off-by: P Arun Kumar Reddy <arunpapannagari23@gmail.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.