mbox series

[V3,00/21] Implement MCTP and PLDM features

Message ID 20220318143619.83489-1-clombard@linux.vnet.ibm.com
Headers show
Series Implement MCTP and PLDM features | expand

Message

Christophe Lombard March 18, 2022, 2:35 p.m. UTC
PLDM is designed to be an interface and data model that provides efficient
access to low-level platform inventory, monitoring, control, event, and
data/parameters transfer functions. For example, temperature, voltage, or
fan sensors can have a PLDM representation that can be used to monitor or
control the platform using a set of PLDM messages. PLDM over MCTP binding
defines the format of PLDM over MCTP messages.

This patch set covers these following steps:
- initialize MCTP binding over LPC Bus interface.
- define PLDM responder and PLDM control and discovery requests.
- define PLDM requester and define the functions and data structures used
for discovering, describing, initializing, and accessing sensors and
effecters within the management controllers and management devices of a
platform management subsystem using PLDM messaging. 
- encode and decode APIs for in-band readFile and writeFile commands.

To enable the new PLDM features, add CONFIG_PLDM as a parameter:
  make .... CONFIG_PLDM=1

This patch set should be applied on top of this previous set:
Import external libraries for MCTP/PLDM protocols.

Changelog[v3]
 - Rebase to latest upstream.
 - patch1 : - Current IPMI testcase broken.
 - patch9 : - Consider the dest_id in pldm_send().
 - patch10: - Add a comment.
 - patch15: - Update find_lid_by_attr_name().
 - patch16: - Copy fsdata.length in the returned structure.
 - patch20: - Cleanup write_file_req().

Changelog[v2]
 - Rebase to latest upstream.
 - patch3 : - Patch is now correctly built.
 - patch9 : - Update number of retries.
 - patch10: - Update traces.
 - patch11: - Add new parameter (no_timeout) for the api:
              set_state_effecter_states_req().
 - patch12: - Call set_state_effecter_states_req() with the new parameter.
 - patch13: - Call set_state_effecter_states_req() with the new parameter.
 - patch14: - Update traces.
 - patch15: - Change the signature of pldm_bios_get_lids_id().
 - patch16: - Add new PLDM FRU requests.

Christophe Lombard (21):
  hw: Move lpc firmware space helpers
  hw/ast-bmc: Initialize ast lpc mctp binding
  core/pldm: PLDM over MCTP Binding
  core/pldm: Add PLDM responder support
  core/pldm: Encode GetTID response
  core/pldm: Encode GetPLDMTypes response
  core/pldm: Encode GetPLDMCommands response
  core/pldm: Encode GetPLDMVersion response
  core/pldm: Implement PLDM requester
  core/pldm: PLDM for Platform Monitoring and Control Specification
  core/pldm: Encode state effecter request
  core/pldm: Send a system firmware Graceful Restart request
  core/pldm: Send a system chassis Off-Soft Graceful request
  core/pldm: PLDM for BIOS Control and Configuration Specification
  core/pldm: Find lid attribute from bios tables
  core/pldm: PLDM for FRU data Specification
  core/pldm: Update "bmc-firmware-version" device-tree field
  core/pldm: PLDM for File-IO operations
  core/pldm: Add file io read request
  core/pldm: Add file io write request
  core/pldm: Get file handle and file length

 core/Makefile.inc                  |   6 +-
 core/pldm/Makefile.inc             |  18 ++
 core/pldm/pldm-bios-requests.c     | 358 ++++++++++++++++++++++
 core/pldm/pldm-common.c            | 154 ++++++++++
 core/pldm/pldm-file-io-requests.c  | 468 +++++++++++++++++++++++++++++
 core/pldm/pldm-fru-requests.c      | 148 +++++++++
 core/pldm/pldm-platform-requests.c | 407 +++++++++++++++++++++++++
 core/pldm/pldm-requester.c         | 268 +++++++++++++++++
 core/pldm/pldm-responder.c         | 328 ++++++++++++++++++++
 core/pldm/pldm.h                   |  79 +++++
 hw/ast-bmc/Makefile.inc            |   7 +
 hw/ast-bmc/ast-mctp.c              | 347 +++++++++++++++++++++
 hw/lpc.c                           |  74 +++++
 include/ast.h                      |   7 +
 include/lpc.h                      |   6 +
 include/pldm.h                     |  28 ++
 16 files changed, 2702 insertions(+), 1 deletion(-)
 create mode 100644 core/pldm/Makefile.inc
 create mode 100644 core/pldm/pldm-bios-requests.c
 create mode 100644 core/pldm/pldm-common.c
 create mode 100644 core/pldm/pldm-file-io-requests.c
 create mode 100644 core/pldm/pldm-fru-requests.c
 create mode 100644 core/pldm/pldm-platform-requests.c
 create mode 100644 core/pldm/pldm-requester.c
 create mode 100644 core/pldm/pldm-responder.c
 create mode 100644 core/pldm/pldm.h
 create mode 100644 hw/ast-bmc/ast-mctp.c
 create mode 100644 include/pldm.h