From patchwork Fri Jul 21 09:06:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lombard X-Patchwork-Id: 1810779 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=112.213.38.117; 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=mMWKHZKo; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R6kGV1YQWz20Cs for ; Fri, 21 Jul 2023 19:07:30 +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=mMWKHZKo; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4R6kGV0FsKz3c4s for ; Fri, 21 Jul 2023 19:07:30 +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=mMWKHZKo; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=linux.ibm.com (client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=clombard@linux.ibm.com; receiver=lists.ozlabs.org) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 4R6kGD1BJBz3bWr for ; Fri, 21 Jul 2023 19:07:15 +1000 (AEST) Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36L8aEYk022733 for ; Fri, 21 Jul 2023 09:07:13 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=s21l19bM3fKS4rpVx6RAZc3lsnqyC/KYxH1I8nGLjnY=; b=mMWKHZKojIdVLLXG5gcne8kfiAqjEHuXzl+RIJ5+oHNj7mYwCXqpyaZ6qKph5esSYUD2 eCa5YlCjLMpXerqd91UQdnrraaI0EhhCBUuALOJf5C2wAIl+zYEmfey/DDLm9kLmJWA7 yuJe29vG/VKpNXFbEmXMFB5y/K536nwh8/hXpNqG/PEPT9W4/XRYL8RFdE6txNvmiPF0 DNzFBFq0hz5yYE4hsu6gmFn8lVVin9u3m8IY0NLMszd8uhUDXEpmZYsXM5C4oHCThimH LKKJgsjP9bP0eUlO+679MY+3OYX2xKFRjFS1wLgtAzTd4DS6b5qlOft9EMKDgKssOzs5 zw== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3ryp34spk9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 21 Jul 2023 09:07:12 +0000 Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 36L7p3PT031116 for ; Fri, 21 Jul 2023 09:07:11 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3rv79k2vu8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 21 Jul 2023 09:07:11 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 36L9794H21561856 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 21 Jul 2023 09:07:09 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 81D9B2004B for ; Fri, 21 Jul 2023 09:07:09 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4810B2004D for ; Fri, 21 Jul 2023 09:07:09 +0000 (GMT) Received: from li-ac0ca24c-3330-11b2-a85c-93224c50ad7a.ibm.com.com (unknown [9.179.31.149]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP for ; Fri, 21 Jul 2023 09:07:09 +0000 (GMT) From: Christophe Lombard To: skiboot@lists.ozlabs.org Date: Fri, 21 Jul 2023 11:06:47 +0200 Message-ID: <20230721090708.26035-1-clombard@linux.ibm.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: p8rBOzW8Jt4FC0UK9BGNEF0YQE03-dyM X-Proofpoint-GUID: p8rBOzW8Jt4FC0UK9BGNEF0YQE03-dyM 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-07-21_05,2023-07-20_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=911 phishscore=0 spamscore=0 clxscore=1011 malwarescore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 adultscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307210081 Subject: [Skiboot] [PATCH V9 00/21] Implement MCTP and PLDM features 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" 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[v9] - Rebase to latest upstream. - patch12: - Add find_effecter_id_by_state_set_Id arguments. Changelog[v8] - Rebase to latest upstream. - patch2 : - Do not poll when we respond to a BMC request. - Read the Rx_complete command out of the ODR. - patch3 : - Move message rx callback. - patch15: - Change returned value. - patch19: - Change function signature. - patch20: - Change function signature. - patch21: - Change returned value. Changelog[v7] - Rebase to latest upstream. - patch2 : - Use opal poller. - patch3 : - Move message rx callback. - patch4 : - Rename PKT_SIZE. - patch9 : - Use opal poller. - patch10: - Change the method to retrieve the pdrs. - patch14: - Handle allocation. - patch15: - Add condition to avoid infinite loop. Changelog[v6] - Rebase to latest upstream. - patch1 : - Add mctp backend support. - patch2 : - Rename pldm-common.c to pldm-mctp.c - patch3 : - Rename internal functions. - patch4 : - Rename internal functions. - patch6 : - Rename internal functions. - patch7 : - Rename internal functions. - patch8 : - Rename internal functions. - patch9 : - Add pldm requests queue/list handler. - patch10: - Update pdrs_init and Export BMC tid. - patch14: - Use zalloc instead of malloc api. - patch16: - Add pldm_fru_init. - patch17: - Export BMC firmware version. Changelog[v5] - Rebase to latest upstream. - patch1 : - Remove lpc_fw_read/write in ipmi-hiomap.c and mbox-flash.c. - patch9 : - Increase number of retries. - patch10: - Move part of pldm_platform_init() to a new function. - patch11: - Do not wait PLDM response for some commands. - patch12: - Update a comment. - patch13: - Update a comment. Changelog[v4] - Rebase to latest upstream. - patch2 : - Add ast_mctp_exit() api. - patch3 : - Add pldm_mctp_exit() api. - patch4 : - Add PR_ERR message on error. - patch5 : - Add PR_ERR message on error. - Add suffix for base handler apis. - patch6 : - Add PR_ERR message on error. - Add suffix for base handler apis. - patch7 : - Add PR_ERR message on error. - Add suffix for base handler apis. - patch8 : - Add PR_ERR message on error. - Add suffix for base handler apis. - patch10: - Get BMC tid. - patch11: - Free memory on error. - patch14: - Free memory on error. - patch16: - Add PR_ERR message on error. 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 | 16 + core/pldm/pldm-base-requests.c | 76 +++++ core/pldm/pldm-bios-requests.c | 370 +++++++++++++++++++++ core/pldm/pldm-file-io-requests.c | 492 ++++++++++++++++++++++++++++ core/pldm/pldm-fru-requests.c | 232 +++++++++++++ core/pldm/pldm-mctp.c | 121 +++++++ core/pldm/pldm-platform-requests.c | 500 +++++++++++++++++++++++++++++ core/pldm/pldm-requester.c | 335 +++++++++++++++++++ core/pldm/pldm-responder.c | 469 +++++++++++++++++++++++++++ core/pldm/pldm.h | 85 +++++ hw/ast-bmc/Makefile.inc | 7 + hw/ast-bmc/ast-mctp.c | 382 ++++++++++++++++++++++ hw/lpc.c | 74 +++++ include/ast.h | 28 ++ include/lpc.h | 6 + include/pldm.h | 39 +++ libflash/ipmi-hiomap.c | 66 +--- libflash/mbox-flash.c | 64 +--- libflash/test/mbox-server.c | 68 ++++ libflash/test/test-ipmi-hiomap.c | 66 ++++ platforms/astbmc/common.c | 41 +++ 22 files changed, 3416 insertions(+), 127 deletions(-) create mode 100644 core/pldm/Makefile.inc create mode 100644 core/pldm/pldm-base-requests.c create mode 100644 core/pldm/pldm-bios-requests.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-mctp.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