From patchwork Fri Apr 29 09:40:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lombard X-Patchwork-Id: 1624067 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=U7pR/GgA; dkim-atps=neutral Authentication-Results: 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=) 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 RSA-PSS (2048 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KqSCm1X02z9sFN for ; Fri, 29 Apr 2022 19:40:51 +1000 (AEST) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KqSCl63Lsz3bqJ for ; Fri, 29 Apr 2022 19:40:51 +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=U7pR/GgA; dkim-atps=neutral X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=linux.vnet.ibm.com (client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=clombard@linux.vnet.ibm.com; receiver=) 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=U7pR/GgA; dkim-atps=neutral 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 4KqSCV5tPWz3bYS for ; Fri, 29 Apr 2022 19:40:38 +1000 (AEST) Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 23T9Wt48024362 for ; Fri, 29 Apr 2022 09:40:36 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=1/VGt2nWC+1TLazR09qoA4WqZdWgKwDrTpdYSslon1c=; b=U7pR/GgAlCP+bimZZKQI5TnqLdJpA3RqMkE4hem8t4eRsflT7EpNCfJ5aAxWJv6opW6M YA/MxPloVDWuTFXRk2z+kc7Xij+4FMEAhttSNWo4A1AKpIvNZACueo+xyO2jYUlNzGqM RVAgAxLqwuZGjowYZ8G9SXpJus1c0sxAUmhTdnCnFx4BrTxwcMGI9OFnA+JudHuZD0CC y/N1iJVsyvCCshuBIHIW6nItaMl2JT1MoJPRA9Zz0DoZli2122S5r41YctwR+kv+ftlW /OfO03MTvdkl9Cjn7yRNv9YZcTqlF4gJeY+FVQnB9IX8WA5eQYFmnAqf2QBiemXPGJxa gg== Received: from ppma06ams.nl.ibm.com (66.31.33a9.ip4.static.sl-reverse.com [169.51.49.102]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3fqnkdy0te-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 29 Apr 2022 09:40:35 +0000 Received: from pps.filterd (ppma06ams.nl.ibm.com [127.0.0.1]) by ppma06ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 23T9cYeh015687 for ; Fri, 29 Apr 2022 09:40:33 GMT Received: from b06avi18878370.portsmouth.uk.ibm.com (b06avi18878370.portsmouth.uk.ibm.com [9.149.26.194]) by ppma06ams.nl.ibm.com with ESMTP id 3fm8qj8wby-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 29 Apr 2022 09:40:33 +0000 Received: from d06av24.portsmouth.uk.ibm.com (d06av24.portsmouth.uk.ibm.com [9.149.105.60]) by b06avi18878370.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 23T9edHO23003592 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 29 Apr 2022 09:40:39 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E621D42041 for ; Fri, 29 Apr 2022 09:40:30 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BE20C4203F for ; Fri, 29 Apr 2022 09:40:30 +0000 (GMT) Received: from li-ed209401-43e8-11cb-8043-c0c0b85d70f7.ibm.com.com (unknown [9.171.83.222]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP for ; Fri, 29 Apr 2022 09:40:30 +0000 (GMT) From: Christophe Lombard To: skiboot@lists.ozlabs.org Date: Fri, 29 Apr 2022 11:40:09 +0200 Message-Id: <20220429094030.71902-1-clombard@linux.vnet.ibm.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: r7wiFdi72x11A_fr5Hlw1YzUQrXymLFz X-Proofpoint-GUID: r7wiFdi72x11A_fr5Hlw1YzUQrXymLFz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-29_05,2022-04-28_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=937 bulkscore=0 malwarescore=0 suspectscore=0 impostorscore=0 clxscore=1015 adultscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204290054 Subject: [Skiboot] [PATCH V5 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[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 | 19 ++ core/pldm/pldm-base-requests.c | 58 ++++ core/pldm/pldm-bios-requests.c | 359 ++++++++++++++++++++++ core/pldm/pldm-common.c | 168 +++++++++++ core/pldm/pldm-file-io-requests.c | 469 +++++++++++++++++++++++++++++ core/pldm/pldm-fru-requests.c | 148 +++++++++ core/pldm/pldm-platform-requests.c | 426 ++++++++++++++++++++++++++ core/pldm/pldm-requester.c | 268 +++++++++++++++++ core/pldm/pldm-responder.c | 413 +++++++++++++++++++++++++ core/pldm/pldm.h | 88 ++++++ hw/ast-bmc/Makefile.inc | 7 + hw/ast-bmc/ast-mctp.c | 355 ++++++++++++++++++++++ hw/lpc.c | 74 +++++ include/ast.h | 8 + include/lpc.h | 6 + include/pldm.h | 33 ++ libflash/ipmi-hiomap.c | 66 +--- libflash/mbox-flash.c | 64 +--- libflash/test/mbox-server.c | 68 +++++ libflash/test/test-ipmi-hiomap.c | 66 ++++ 21 files changed, 3042 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-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