pldmd: Wire fw-update-legacy into pldmd

The fw-update-legacy module provides the firmware update
functionality ported from the legacy pldmd-google daemon. This
change wires the legacy firmware manager into the
pldmd-google-dev-common main execution path. The manager now
inherits from MctpDiscoveryHandlerIntf and is registered with
the MctpDiscovery handler. Relevant PLDM_FWUP messages are
routed to it in the processRxMsg function, restoring the
firmware update features.

Upstream firmware update implementation requires a newer dbus
API version. Updating gBMC to use the newer version is a lot
much bigger effort as it is one of the fundamental dependencies
influencing the whole system, so the quickest way to achieve
feature parity between pldmd-google and
pldmd-google-dev-common was doing this instead.

Tested:
Compiled and verified on platform31. The pldmd daemon
successfully parses the endpoints and initiates
GetFirmwareParameters requests, closely matching the behavior
from the legacy pldmd-google logs. No firmware update
was attempted just yet.

Change-Id: I82044602e9519207fa7e0d8f41947b676bd4f7ab
Google-Bug-Id: 458166668
Signed-off-by: Luka Strizic <lstrz@google.com>
20 files changed
tree: 64dc4cda95ccbb890634e522b4151ce9c53dafe4
  1. common/
  2. configurations/
  3. docs/
  4. fw-update/
  5. fw-update-legacy/
  6. host-bmc/
  7. libpldmresponder/
  8. oem/
  9. platform-mc/
  10. pldmd/
  11. pldmtool/
  12. requester/
  13. softoff/
  14. subprojects/
  15. test/
  16. tools/
  17. utilities/
  18. .clang-format
  19. .clang-tidy
  20. .eslintignore
  21. .gitignore
  22. .linter-ignore
  23. LICENSE
  24. meson.build
  25. meson.options
  26. OWNERS
  27. README.md
README.md

PLDM - Platform Level Data Model

License

Overview

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.

Features

  • Standardized Messaging: Adheres to the DMTF's PLDM specifications, enabling consistent and interoperable communication between different components.
  • Modularity: Supports multiple PLDM types, including base, FRU,Firmware update, Platform Monitoring and Control, and BIOS Control and Configuration.
  • Extensibility: Easily extendable to support new PLDM types and custom OEM commands.
  • Integration: Seamlessly integrates with other OpenBMC components for comprehensive system management.

Getting Started

Prerequisites

To build and run PLDM, you need the following dependencies:

  • Meson
  • Ninja

Alternatively, source an OpenBMC ARM/x86 SDK.

Building

To build the PLDM project, follow these steps:

meson setup build && meson compile -C build

To run unit tests

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.

To enable pldm verbosity

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

To disable pldm verbosity

rm /etc/default/pldmd
systemctl restart pldmd

Documentation

For complete documentation on the functionality and usage of this repository, please refer to the docs folder.