libpldmresponder: guard null host-path handlers pldmd only constructs hostPDRHandler and dbusToPLDMEventHandler when a host EID is configured, but three paths dereference them unconditionally, crashing pldmd on hostless platforms: - pldmPDRRepositoryChgEvent() marks and consumes hostPDRHandler for every PDR repository change event; guard those uses. - getStateSensorReadings() reads the sensor cache from dbusToPLDMEventHandler; fall back to an empty cache, so previousState reports PLDM_SENSOR_UNKNOWN as on a first read. - The OemIBM constructor wires the OEM handlers into hostPDRHandler; skip the wiring when the handler does not exist. Add regression tests for the two responder paths. The new event test surfaced a misaligned uint32_t read of the changeEntry array in getPDRRecordHandles(); copy each entry with memcpy instead. Change-Id: I5118ff9786254799790c848a68bdde5e6f6f2dfc Signed-off-by: JY Voon <jvoon@nvidia.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.