[Skiboot] [PATCH V2 00/10] Import external libraries for MCTP/PLDM protocols
Christophe Lombard
clombard at linux.vnet.ibm.com
Tue Mar 15 23:49:04 AEDT 2022
On OpenBMC, IPMI is currently the primary industry-standard means of
communication between the BMC and the Host firmware. Due to some inherent
limitations of IPMI on OpenPOWER servers, there is a need to improve upon
the communication protocol.
This design aims to employ Platform Level Data Model (PLDM), a standard
application layer communication protocol defined by the DMTF. PLDM draws
inputs from IPMI, but it overcomes most of the latter's limitations. PLDM
is also designed to run on standard transport protocols, for e.g. MCTP
(also designed by the DMTF). MCTP provides for a common transport layer
over several physical channels, by defining hardware bindings. The
solution of PLDM over MCTP also helps overcome some of the limitations of
the hardware channels that IPMI uses.
PLDM is designed to be an effective interface and data model that provides
efficient access to low-level platform inventory, monitoring, control,
event, and data/parameters transfer functions.
----------------------------------------------------------------
- PLDM profiles (DSP0247-DSP0248, ...) (libpldm) -
- -
- oem IBM -
- ----------------- -------------- ----------- ----------- -
- - BIOS - - Platform - - FRU - - File io - -
- - configuration - - monitoring - - data - - - -
- - & control - - & control - - - - - -
- - - - - - - - - -
- ----------------- -------------- ----------- ----------- -
--------------------------------------------
- PLDM Base (libpldm) -
- DSP0240 - -
-------------------------------------------- | PLDM over MCTP binding
| | DSP0241
-------------------------------------------- |
- MCTP Base (libmctp) - -
- DSP0236 -
-------------------------------------------- -
| | | MCTP PCIe VDM
---------------- ---------------- | transport binding
- LPC - - PCIe VDM - - DSP0238
---------------- ----------------
This patch set imports external libraries to handle the MCTP and PLDM
protocols. New series will be provided later for the management of requests
to and from the host.
Implement MCTP and PLDM features:
- MCTP over LPC Binding.
- PLDM responder.
- PLDM requester.
- PLDM Platform requests.
- PLDM Bios requests.
- PLDM File IO requests.
Integrate PLDM on current flash handling code:
- PLDM LID Files handling.
- Opal-prd support
MCTP over PCIe VDM Binding.
To enable the new PLDM feature add CONFIG_PLDM as a parameter:
make .... CONFIG_PLDM=1
Changelog[v2]
- Rebase to latest upstream.
- patch8 : - Add README.skiboot file.
- patch9 : - Add README.skiboot file.
- patch10: - Add README.skiboot file.
Christophe Lombard (10):
libc: Expand limits.h and include in stdint.h
libc: Add ENXIO error code
include: Expand print conversion specificier macros
include: Provide endian conversion functions
include: Create err.h header file
include/asm: Create asm_byteorder.h header file
pldm: Export logging feature
libmctp: Import libmctp library handling MCTP protocol
pldm/libpldm: Import libpldm library handling PLDM protocol
pldm/ibm/libpldm: Import oem IBM libpldm library
Makefile | 2 +
Makefile.main | 20 +-
core/console-log.c | 2 +-
include/asm/byteorder.h | 10 +
include/endian.h | 21 +
include/inttypes.h | 6 +
include/skiboot.h | 1 +
libc/include/err.h | 16 +
libc/include/errno.h | 11 +-
libc/include/limits.h | 6 +
libc/include/stdint.h | 3 +
libmctp/LICENSE | 547 +++++++++
libmctp/Makefile.inc | 22 +
libmctp/README.skiboot | 15 +
libmctp/alloc.c | 60 +
libmctp/astlpc.c | 1366 +++++++++++++++++++++
libmctp/config.h | 59 +
libmctp/container_of.h | 9 +
libmctp/core.c | 833 +++++++++++++
libmctp/crc32.c | 25 +
libmctp/crc32.h | 9 +
libmctp/libmctp-alloc.h | 12 +
libmctp/libmctp-astlpc.h | 54 +
libmctp/libmctp-cmds.h | 74 ++
libmctp/libmctp-log.h | 24 +
libmctp/libmctp-serial.h | 38 +
libmctp/libmctp.h | 156 +++
libmctp/log.c | 75 ++
libmctp/range.h | 18 +
libmctp/serial.c | 359 ++++++
pldm/ibm/libpldm/Makefile.inc | 17 +
pldm/ibm/libpldm/README.skiboot | 15 +
pldm/ibm/libpldm/file_io.c | 841 +++++++++++++
pldm/ibm/libpldm/file_io.h | 725 ++++++++++++
pldm/ibm/libpldm/fru.h | 21 +
pldm/ibm/libpldm/host.c | 106 ++
pldm/ibm/libpldm/host.h | 108 ++
pldm/ibm/libpldm/platform_oem_ibm.c | 50 +
pldm/ibm/libpldm/platform_oem_ibm.h | 56 +
pldm/libpldm/Makefile.inc | 23 +
pldm/libpldm/README.skiboot | 17 +
pldm/libpldm/base.c | 438 +++++++
pldm/libpldm/base.h | 505 ++++++++
pldm/libpldm/bios.c | 668 +++++++++++
pldm/libpldm/bios.h | 618 ++++++++++
pldm/libpldm/bios_table.c | 1126 ++++++++++++++++++
pldm/libpldm/bios_table.h | 728 ++++++++++++
pldm/libpldm/entity.h | 149 +++
pldm/libpldm/firmware_update.c | 1567 ++++++++++++++++++++++++
pldm/libpldm/firmware_update.h | 1132 ++++++++++++++++++
pldm/libpldm/fru.c | 548 +++++++++
pldm/libpldm/fru.h | 507 ++++++++
pldm/libpldm/pdr.c | 914 ++++++++++++++
pldm/libpldm/pdr.h | 399 +++++++
pldm/libpldm/platform.c | 1706 +++++++++++++++++++++++++++
pldm/libpldm/platform.h | 1625 +++++++++++++++++++++++++
pldm/libpldm/pldm_types.h | 165 +++
pldm/libpldm/state_set.h | 236 ++++
pldm/libpldm/states.h | 27 +
pldm/libpldm/utils.c | 211 ++++
pldm/libpldm/utils.h | 108 ++
61 files changed, 19202 insertions(+), 7 deletions(-)
create mode 100644 include/asm/byteorder.h
create mode 100644 include/endian.h
create mode 100644 libc/include/err.h
create mode 100644 libmctp/LICENSE
create mode 100644 libmctp/Makefile.inc
create mode 100644 libmctp/README.skiboot
create mode 100644 libmctp/alloc.c
create mode 100644 libmctp/astlpc.c
create mode 100644 libmctp/config.h
create mode 100644 libmctp/container_of.h
create mode 100644 libmctp/core.c
create mode 100644 libmctp/crc32.c
create mode 100644 libmctp/crc32.h
create mode 100644 libmctp/libmctp-alloc.h
create mode 100644 libmctp/libmctp-astlpc.h
create mode 100644 libmctp/libmctp-cmds.h
create mode 100644 libmctp/libmctp-log.h
create mode 100644 libmctp/libmctp-serial.h
create mode 100644 libmctp/libmctp.h
create mode 100644 libmctp/log.c
create mode 100644 libmctp/range.h
create mode 100644 libmctp/serial.c
create mode 100644 pldm/ibm/libpldm/Makefile.inc
create mode 100644 pldm/ibm/libpldm/README.skiboot
create mode 100644 pldm/ibm/libpldm/file_io.c
create mode 100644 pldm/ibm/libpldm/file_io.h
create mode 100644 pldm/ibm/libpldm/fru.h
create mode 100644 pldm/ibm/libpldm/host.c
create mode 100644 pldm/ibm/libpldm/host.h
create mode 100644 pldm/ibm/libpldm/platform_oem_ibm.c
create mode 100644 pldm/ibm/libpldm/platform_oem_ibm.h
create mode 100644 pldm/libpldm/Makefile.inc
create mode 100644 pldm/libpldm/README.skiboot
create mode 100644 pldm/libpldm/base.c
create mode 100644 pldm/libpldm/base.h
create mode 100644 pldm/libpldm/bios.c
create mode 100644 pldm/libpldm/bios.h
create mode 100644 pldm/libpldm/bios_table.c
create mode 100644 pldm/libpldm/bios_table.h
create mode 100644 pldm/libpldm/entity.h
create mode 100644 pldm/libpldm/firmware_update.c
create mode 100644 pldm/libpldm/firmware_update.h
create mode 100644 pldm/libpldm/fru.c
create mode 100644 pldm/libpldm/fru.h
create mode 100644 pldm/libpldm/pdr.c
create mode 100644 pldm/libpldm/pdr.h
create mode 100644 pldm/libpldm/platform.c
create mode 100644 pldm/libpldm/platform.h
create mode 100644 pldm/libpldm/pldm_types.h
create mode 100644 pldm/libpldm/state_set.h
create mode 100644 pldm/libpldm/states.h
create mode 100644 pldm/libpldm/utils.c
create mode 100644 pldm/libpldm/utils.h
--
2.35.1
More information about the Skiboot
mailing list