ForkNVIDIANVIDIApublished May 6, 2024seen 10h

NVIDIA/pldm

forked from openbmc/pldm

Open original ↗

Captured source

source ↗
published May 6, 2024seen 10hcaptured 10hhttp 200method plain

NVIDIA/pldm

Language: C++

License: Apache-2.0

Stars: 7

Forks: 3

Open issues: 2

Created: 2024-05-06T16:48:17Z

Pushed: 2026-06-10T18:33:37Z

Default branch: develop

Fork: yes

Parent repository: openbmc/pldm

Archived: no

README:

PLDM - Platform Level Data Model

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.

Generate coverage report

Use Meson/Ninja coverage targets with coverage instrumentation enabled:

# 1) Configure with tests and coverage
CC=gcc-13 CXX=g++-13 meson setup --wipe build -Dtests=enabled -Db_coverage=true

# 2) Run tests to generate .gcda data
meson test -C build --print-errorlogs

# 3) Generate HTML coverage report (Meson/Ninja target)
GCOV=gcov-13 ninja -C build coverage-html

The HTML report is generated at:

build/meson-logs/coveragereport/index.html

Optional text report:

GCOV=gcov-13 ninja -C build coverage-text

Text report path:

build/meson-logs/coverage.txt

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

To enable firmware update debug logging (fw-update logs)

--fw-debug is not enabled by default. You can turn it on at runtime via the service environment file and a service restart:

# Enable fw-update debug logging
sudo sh -c 'echo "FWDEBUG=--fw-debug" >> /etc/default/pldm_verbosity'
sudo systemctl restart pldmd

To disable it again:

sudo sed -i '/^FWDEBUG=/d' /etc/default/pldm_verbosity
# Or set it empty: sudo sh -c 'echo "FWDEBUG=" >> /etc/default/pldm_verbosity'
sudo systemctl restart pldmd

Documentation

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