From patchwork Tue Jun 20 14:51:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lombard X-Patchwork-Id: 1797366 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=B7aTr0fv; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QlqNk1T0Lz20XZ for ; Wed, 21 Jun 2023 00:52:22 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=B7aTr0fv; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4QlqNk0Rvqz30gp for ; Wed, 21 Jun 2023 00:52:22 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=B7aTr0fv; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=linux.ibm.com (client-ip=148.163.158.5; helo=mx0b-001b2d01.pphosted.com; envelope-from=clombard@linux.ibm.com; receiver=lists.ozlabs.org) Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4QlqNd2nRBz30fM for ; Wed, 21 Jun 2023 00:52:17 +1000 (AEST) Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 35KElLJO005240 for ; Tue, 20 Jun 2023 14:52:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=LXchITiduPFGfq1EsBPJ+8K0BJcLJGOvLadZTz9wr0A=; b=B7aTr0fv8vYiAmqivUEP/nMjzGpGccaphL00/O7259FeExB7FqitEinZI+sAhtjjo5JR wrq7pKGdaTggaYOxkjpp4CKci2tWYBuVu2rU+aiwRXbtnRoYnbjFCnj1uI+gG0X0zcK9 V4+9XcrDGKZhSZyrHLRxbLeLGYdUzghgmE/x25kYynqaaJU4+g43GFx0S/Ue+4tgnjAI 5bLOsykDGjGOtgawA7cYEvq8Vlq11y5/9Y1xO+ibkfGq3aBfE6yFOEBIDUbhsLMweeYv h69dKVUbJuFLsa2FAyjwSbT+us4hdRXZcLNwpIf0xs/RIBRicjLsq+W1tR0MRreMk930 Qg== Received: from ppma03fra.de.ibm.com (6b.4a.5195.ip4.static.sl-reverse.com [149.81.74.107]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rbe658365-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 20 Jun 2023 14:52:14 +0000 Received: from pps.filterd (ppma03fra.de.ibm.com [127.0.0.1]) by ppma03fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 35K1i2bq020564 for ; Tue, 20 Jun 2023 14:52:12 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma03fra.de.ibm.com (PPS) with ESMTPS id 3r94f59mhe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 20 Jun 2023 14:52:12 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 35KEq9g063111668 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 20 Jun 2023 14:52:10 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D62A520043 for ; Tue, 20 Jun 2023 14:52:09 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B41A220040 for ; Tue, 20 Jun 2023 14:52:09 +0000 (GMT) Received: from li-ac0ca24c-3330-11b2-a85c-93224c50ad7a.biot.fr.ibm.com (unknown [9.144.62.191]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP for ; Tue, 20 Jun 2023 14:52:09 +0000 (GMT) From: Christophe Lombard To: skiboot@lists.ozlabs.org Date: Tue, 20 Jun 2023 16:51:58 +0200 Message-ID: <20230620145209.88395-1-clombard@linux.ibm.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: p17mBVv18i2-HCFl5_eqTa_efVzgftvr X-Proofpoint-ORIG-GUID: p17mBVv18i2-HCFl5_eqTa_efVzgftvr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-06-20_10,2023-06-16_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1011 malwarescore=0 bulkscore=0 spamscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 mlxlogscore=999 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2306200131 Subject: [Skiboot] [PATCH V4 0/9] Import external libraries for MCTP/PLDM protocols X-BeenThere: skiboot@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list for skiboot development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" 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 ---------------- ---------------- The serie of patches put in place 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. - MCTP over LPC Binding. - PLDM responder. - PLDM requester. - PLDM Platform requests. - PLDM Bios requests. - PLDM File IO requests. - PLDM LID Files handling. - MCTP over PCIe VDM Binding. To enable the new PLDM feature add CONFIG_PLDM as a parameter: make .... CONFIG_PLDM=1 Changelog[v4] - Rebase to latest upstream. - patch7: Re-synchronizing with latest upstream - patch8: Re-synchronizing with latest upstream - patch9: Re-synchronizing with latest upstream Changelog[v3] - Rebase to latest upstream. - Remove patch: include: Create err.h header file - patch7: Re-synchronizing with latest upstream - patch8: Re-synchronizing with latest upstream - patch9: Re-synchronizing with latest upstream Changelog[v2] - Rebase to latest upstream. - patch8 : - Add README.skiboot file. - patch9 : - Add README.skiboot file. - patch10: - Add README.skiboot file. Christophe Lombard (9): 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/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 | 15 +- core/console-log.c | 2 +- include/asm/byteorder.h | 10 + include/endian.h | 24 + include/inttypes.h | 6 + include/skiboot.h | 1 + libc/include/errno.h | 12 +- libc/include/limits.h | 6 + libc/include/stdint.h | 3 + libmctp/LICENSE | 547 ++++ libmctp/Makefile.inc | 22 + libmctp/README.skiboot | 15 + libmctp/alloc.c | 59 + libmctp/astlpc.c | 1497 +++++++++++ libmctp/config.h | 59 + libmctp/container_of.h | 9 + libmctp/core.c | 851 ++++++ libmctp/crc32.c | 25 + libmctp/crc32.h | 9 + libmctp/libmctp-alloc.h | 12 + libmctp/libmctp-astlpc.h | 58 + libmctp/libmctp-cmds.h | 74 + libmctp/libmctp-log.h | 24 + libmctp/libmctp-serial.h | 40 + libmctp/libmctp.h | 174 ++ libmctp/log.c | 75 + libmctp/range.h | 26 + libmctp/serial.c | 383 +++ pldm/include/libpldm/base.h | 580 ++++ pldm/include/libpldm/bios.h | 620 +++++ pldm/include/libpldm/bios_table.h | 729 +++++ pldm/include/libpldm/entity.h | 149 ++ pldm/include/libpldm/firmware_update.h | 1139 ++++++++ pldm/include/libpldm/fru.h | 507 ++++ .../libpldm/oem/ibm/libpldm/entity_oem_ibm.h | 17 + .../include/libpldm/oem/ibm/libpldm/file_io.h | 915 +++++++ .../libpldm/oem/ibm/libpldm/fru_oem_ibm.h | 21 + pldm/include/libpldm/oem/ibm/libpldm/host.h | 108 + .../oem/ibm/libpldm/platform_oem_ibm.h | 56 + .../oem/ibm/libpldm/state_set_oem_ibm.h | 58 + pldm/include/libpldm/pdr.h | 411 +++ pldm/include/libpldm/platform.h | 2184 +++++++++++++++ pldm/include/libpldm/pldm_types.h | 165 ++ pldm/include/libpldm/state_set.h | 237 ++ pldm/include/libpldm/states.h | 27 + pldm/include/libpldm/utils.h | 111 + pldm/libpldm/Makefile.inc | 24 + pldm/libpldm/README.skiboot | 17 + pldm/libpldm/base.c | 518 ++++ pldm/libpldm/bios.c | 671 +++++ pldm/libpldm/bios_table.c | 1163 ++++++++ pldm/libpldm/firmware_update.c | 1571 +++++++++++ pldm/libpldm/fru.c | 553 ++++ pldm/libpldm/msgbuf.h | 596 +++++ pldm/libpldm/msgbuf/platform.h | 127 + pldm/libpldm/oem/ibm/Makefile.inc | 19 + pldm/libpldm/oem/ibm/README.skiboot | 15 + pldm/libpldm/oem/ibm/file_io.c | 1057 ++++++++ pldm/libpldm/oem/ibm/host.c | 108 + pldm/libpldm/oem/ibm/platform.c | 50 + pldm/libpldm/pdr.c | 978 +++++++ pldm/libpldm/platform.c | 2373 +++++++++++++++++ pldm/libpldm/utils.c | 224 ++ 64 files changed, 22131 insertions(+), 7 deletions(-) create mode 100644 include/asm/byteorder.h create mode 100644 include/endian.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/include/libpldm/base.h create mode 100644 pldm/include/libpldm/bios.h create mode 100644 pldm/include/libpldm/bios_table.h create mode 100644 pldm/include/libpldm/entity.h create mode 100644 pldm/include/libpldm/firmware_update.h create mode 100644 pldm/include/libpldm/fru.h create mode 100644 pldm/include/libpldm/oem/ibm/libpldm/entity_oem_ibm.h create mode 100644 pldm/include/libpldm/oem/ibm/libpldm/file_io.h create mode 100644 pldm/include/libpldm/oem/ibm/libpldm/fru_oem_ibm.h create mode 100644 pldm/include/libpldm/oem/ibm/libpldm/host.h create mode 100644 pldm/include/libpldm/oem/ibm/libpldm/platform_oem_ibm.h create mode 100644 pldm/include/libpldm/oem/ibm/libpldm/state_set_oem_ibm.h create mode 100644 pldm/include/libpldm/pdr.h create mode 100644 pldm/include/libpldm/platform.h create mode 100644 pldm/include/libpldm/pldm_types.h create mode 100644 pldm/include/libpldm/state_set.h create mode 100644 pldm/include/libpldm/states.h create mode 100644 pldm/include/libpldm/utils.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/bios.c create mode 100644 pldm/libpldm/bios_table.c create mode 100644 pldm/libpldm/firmware_update.c create mode 100644 pldm/libpldm/fru.c create mode 100644 pldm/libpldm/msgbuf.h create mode 100644 pldm/libpldm/msgbuf/platform.h create mode 100644 pldm/libpldm/oem/ibm/Makefile.inc create mode 100644 pldm/libpldm/oem/ibm/README.skiboot create mode 100644 pldm/libpldm/oem/ibm/file_io.c create mode 100644 pldm/libpldm/oem/ibm/host.c create mode 100644 pldm/libpldm/oem/ibm/platform.c create mode 100644 pldm/libpldm/pdr.c create mode 100644 pldm/libpldm/platform.c create mode 100644 pldm/libpldm/utils.c