From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.75]) by mx.groups.io with SMTP id smtpd.web10.13950.1681220479769531591 for ; Tue, 11 Apr 2023 06:41:20 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=bOUtpbzj; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.92.75, mailfrom: nicklew@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D046MBjq5xpM4+amb6gEi/tV+61Uh0d3nU+v0bLw9Ks19TUkI7veTcqqZTlC6K376a3IAXj6UNhufSsL/7Y4osQCEZ72QNnObMjl0luoBQrN22/BXfqtCLd333BZThvevfutQoJ7t4Ei8kYGYZYe/ibvVKPT3Dq0hBTVc6N+ra5lSxUQ9WhA1h/0xuYlFjWrBrsFIbfKvY947Pxlfb78osjDmps5+jz5TLCxU/Xo6jgWENYU/yN299TfjRt9KL+rBt7zVPJAZvgmPkPRrvCi7pe3g/b5CUrXJub4FdVlYzVEbUSRCB6ta5Eai0u6GRPLmQji/btF1mIAOT36J+h89A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gF6wHw/uqcWv0K9sEaEuxYSPgjLJSRQ/vJgQ/yPGU5M=; b=djhfE54BGIJydNHnWRHtjgEzozlA/rgsUumtsOWCLu7F+X+R9WLnfQw9CadVNlITVSqmkf3f9+gxD4DagTrrazDbAccAnQD5qJHNTf2CcWsIsivSu9xrrG3qdeWW3UxBrI5EMJHgKinpXE/LYdU47ETMDzkVGaJCteDfP++90vSGKGP5cnWA+659NV5K/TXPxmV+X+cEDv3yfTlHnOffaj43ITSIg5G5j7d9N26ouf3dCFTvpvhmeSs/LUUYOgwBx3LdKv/HdH16ilzI9u0anLIGjOgRQbqsf87JQ6Xbij1x5KLosQPLcbp865ysN6eLPouLyj2v2pJ1wlf3iWSG9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gF6wHw/uqcWv0K9sEaEuxYSPgjLJSRQ/vJgQ/yPGU5M=; b=bOUtpbzjYyofpjbLV80qQkPQCGM5BQichFgbXXIoc104D9MOowhy9qXiccEt2Ljs7aN4YlLM7Hux59XteBMkqq4Q49ur1X7VtjMlGTEc8x3QKULqfJhPNZaHXTlsdU8ZQJoy4771FE+QVVNku4/wPgX3HGCb2Jle+VZNKybkk9qQx1CB4ExvQ/OOVRCHHiX0gHX/qoStjiochIRj6OzqZsGxMA+1T70C0mYYU7ei6a5USCO3yCQFWRGuJo8GbH4qyfEZGWxU0vaT4+Xptix97U7BglNOCUjklOIn545svosv61IUuHaKA4HaIP0+eVyYYv29z5JkItd58sl33KwVOw== Received: from MW4PR12MB7031.namprd12.prod.outlook.com (2603:10b6:303:1ef::6) by CY8PR12MB8297.namprd12.prod.outlook.com (2603:10b6:930:79::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.36; Tue, 11 Apr 2023 13:41:17 +0000 Received: from MW4PR12MB7031.namprd12.prod.outlook.com ([fe80::deb:4184:674f:c674]) by MW4PR12MB7031.namprd12.prod.outlook.com ([fe80::deb:4184:674f:c674%4]) with mapi id 15.20.6277.038; Tue, 11 Apr 2023 13:41:16 +0000 From: "Nickle Wang" To: "abner.chang@amd.com" , "devel@edk2.groups.io" CC: Isaac Oram , Abdul Lateef Attar , Igor Kulchytskyy Subject: Re: [edk2-platforms][PATCH 05/14] ManageabilityPkg: Add PldmProtocolLib Thread-Topic: [edk2-platforms][PATCH 05/14] ManageabilityPkg: Add PldmProtocolLib Thread-Index: AQHZZj2+SAlIlpSTyUi+DJuCyvJwx68mKY4w Date: Tue, 11 Apr 2023 13:41:16 +0000 Message-ID: References: <20230403150459.925-1-abner.chang@amd.com> <20230403150459.925-6-abner.chang@amd.com> In-Reply-To: <20230403150459.925-6-abner.chang@amd.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR12MB7031:EE_|CY8PR12MB8297:EE_ x-ms-office365-filtering-correlation-id: 6052670e-d834-47c2-32f7-08db3a926cdd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BU/dtIb7MtE53uVhpHcC+vTO2oGUoB40sSLp4pXc41Ryc0wPYZXYKsQ92w+DeLvJ32MiKetlp4K5fMi97I28/z3HKJdvqJVD7/xdAkD6R3vZ0HtclRGj08Jm4/zUomgjyK0gbj0bLD0pJobw8P8Q71rjb/dSu0m+NKtRxSFS1lpH/8nbzOADjR8RG3M4LXROjgDw6NhS+HPFaewNc+O/Ttn5G03GFJBLiWSvpDvmdT1tgN8O1nTFw9ingNzJQPG9+abAWoz6BYdylboDJlnfSCya2gQttUaRVcvyGHvytei0ve6A9+uZcYjaQDoYOq4109YaLf4DHlK6xqvvWTHgks/5t887V6g5MV+VmdgIw20LrrxhzvHhLEdfClGBApdsB2cI+JS2Gge+K+wpOs4JRphZg6VKiGXZFAZ6+GO0vF3iCjI3pRlVgjuhwCU8a0nZnyBNfgH3kpFkgxFSF4qFTQELFcov35bbqYLK0HT7U+4B1kuZEuFhwzhwg9X/x8kZdqfNJ12cixmyKKLjCafRpJESwFr9IuB7PMVFEG5wo6qRh0seIr7Ln3vS8qrzvc3/hhgR47CpmxgPyy7r2LrfuphMy/2Rv/oEIKkyXWBNXK7uREUhLxjS+nqdB5oVht+hnCk/JEIFFqHKgcrQxOWUxg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR12MB7031.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(376002)(346002)(396003)(366004)(136003)(451199021)(71200400001)(478600001)(7696005)(55016003)(33656002)(38070700005)(83380400001)(86362001)(38100700002)(122000001)(30864003)(2906002)(9686003)(316002)(110136005)(6506007)(53546011)(54906003)(26005)(186003)(66476007)(52536014)(8676002)(66556008)(8936002)(5660300002)(41300700001)(66446008)(64756008)(66946007)(4326008)(76116006)(156123004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?vgbJzn5E7MDnoaxyfXERzPne/ISpKJR1dPuK+Yu0Kit1eykbSDCbMxDmBwwo?= =?us-ascii?Q?LvH2o7ZEJGqllRxkN1UI1GArLAPEsWp+pqnCBJ6LJMzj1Bj+LkHd6SdxdMYV?= =?us-ascii?Q?Mk+2FvNVh7so0XZaNkHSHogtD6dCJkxw3WM95gyWVXQbTLjl02whHFGEMXQ5?= =?us-ascii?Q?7tEEmUFUQeDNeKpxPuVPNWOCd8IRmQC9Gav/tiOLakHnjT00LuQOtGR218Ue?= =?us-ascii?Q?NLEyEwbdI5p4l9eIL7VkGIuH0ve1hdmpm6NEa56xlxXJocMzWcfNHyk4vpqB?= =?us-ascii?Q?T9gcwHFGXmD+zrNrH01AJkcpqfjKDspLTKf+t1yECaLGxGtlP6Y2ypSyi//K?= =?us-ascii?Q?YxbuW2al9HT/sSAp+Xg33TMZgbdCStubONcmWd9uBno/ZbK2AJaWewVYcQh1?= =?us-ascii?Q?UCYUlb3sKIX9jttKE87G3gnYna2XPjH1znsnBH3vNo3qhSdP6i5f4YL3YgpU?= =?us-ascii?Q?cI8y1ShDKcJQFTYEh/Qlb6GGOeWnEoEh1wyuv3CGWDnCLRlOU+2cGdoOvyD3?= =?us-ascii?Q?cjBwuGYKN6AzN3aZG6KVgxPJKbkFah3a2soTsaGZGmei3bLDODTaeo6xVKAV?= =?us-ascii?Q?gI6RtlP/dVSmPZAvLrL3r4b1Q7iUjYNbRZJxu6xp/hVnIVjbWy9ae36+l5qW?= =?us-ascii?Q?6Hvhs8/KC8r0BEvSpBhkb69d4D750Lx+k3dTfZLqa3qKUaARx6ZzEKtHjB1Y?= =?us-ascii?Q?N7p2QTXJ854cel3ukjx7wMSeGiVcyoGv7gUk+wGDwuaQ8GSyiHzrPjb72fvX?= =?us-ascii?Q?3YYs3ChLEM9WMNIBIVfXpyUpNrCOUiBTkY+gbuTUkVpzFfiu7Ut1P5dF1inL?= =?us-ascii?Q?Ak352QQNrXyiyVmCXYkEz52CiUEw3yBdX9XdJ+/AVsEcSVSs3bI/szbu7egA?= =?us-ascii?Q?+D6eaJUp4JNirTGhw14jnWL/4gn2KfJwIjR/oyMPNeuxPxhcq41bvUlh0sh3?= =?us-ascii?Q?PcVJkMlDZ2Q5BVPToa5/4HqwS7NL7Lftrh0PEaNHjk/25k0Hy36c3tE0/1SZ?= =?us-ascii?Q?pStGHCTT1wMY8m+MyjV5HFlSmc7KFE50tp5lAoKWuRDpg1F3CGOlUbZnPnHC?= =?us-ascii?Q?k0N6oarNEmU3W1MjesUQMGk1vHtGlrkRKbAAIHAY/nnSjbUIxWe7K1mGPJDn?= =?us-ascii?Q?mDpsz5bINyEaQMU+MS7I9Myhd/ocbLZFZ1Eew/++JrejdD4E4SvyhZeE7wEV?= =?us-ascii?Q?vuyFF9I0Dxr0Vtbw5vb0OwNdxrxVcaWyw6aNZbQ27JesqzX1AY3G/Ua7mB+g?= =?us-ascii?Q?+/KrTQc6Xc8WgPxmK9Y6jHwNzir8invExfrMLbEyn+B4bN0X9rQH45sw5If3?= =?us-ascii?Q?d4iuv0TwBEPL0usycIh6f8yN8XQ/Wui8Zj2UUEdbC8rCV7dBAJ46EenD9w/2?= =?us-ascii?Q?s91anpLAndDby/jg/OAKsphR21caZEywx0+812PcDsvD2hkTfFr9DYEZGuTN?= =?us-ascii?Q?9gW2VHgPWpy4jjSHU1HJ1yZ8nQnvQSuqXmrdOwKZOizAeIrsWVLdzJHBbIGq?= =?us-ascii?Q?mAcFrf54irtossEdxT3xEzumiCRgo1mPd55qBf5nwa08C6ZpxrvZUFuW1VVu?= =?us-ascii?Q?2zFpvauQlADjPk1XTyw=3D?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR12MB7031.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6052670e-d834-47c2-32f7-08db3a926cdd X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Apr 2023 13:41:16.8967 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: q03GG6xU+kw5vcWhXCt9P4GUfpe7CAYcJJb0IUU0M0lc96WrX712486z7hAo8O/0zUiageyYXxdFvKRPmeZ9Ug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8297 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Abner, It seems to me that some of protocol GUIDs are defined in [Guids] section i= nstead of [Protocol] section in Features/ManageabilityPkg/ManageabilityPkg.= dec file. Could you please address this together? Thanks, Nickle > -----Original Message----- > From: abner.chang@amd.com > Sent: Monday, April 3, 2023 11:05 PM > To: devel@edk2.groups.io > Cc: Isaac Oram ; Abdul Lateef Attar > ; Nickle Wang ; Igor Kulchytskyy > > Subject: [edk2-platforms][PATCH 05/14] ManageabilityPkg: Add > PldmProtocolLib >=20 > External email: Use caution opening links or attachments >=20 >=20 > From: Abner Chang >=20 > PldmProtocolLib provides the library > function to PLDM protocol. >=20 > Signed-off-by: Abner Chang > Cc: Isaac Oram > Cc: Abdul Lateef Attar > Cc: Nickle Wang > Cc: Igor Kulchytskyy > --- > .../ManageabilityPkg/ManageabilityPkg.dec | 3 + > .../Include/Dsc/Manageability.dsc | 3 + > .../ManageabilityPkg/ManageabilityPkg.dsc | 1 + > .../Dxe/PldmProtocolLib.inf | 42 +++++++++ > .../Include/Library/BasePldmProtocolLib.h | 41 +++++++++ > .../Include/Protocol/PldmProtocol.h | 87 +++++++++++++++++++ > .../PldmProtocolLibrary/Dxe/PldmProtocolLib.c | 87 +++++++++++++++++++ > .../Dxe/PldmProtocolLib.uni | 18 ++++ > 8 files changed, 282 insertions(+) > create mode 100644 > Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolLib= .i > nf > create mode 100644 > Features/ManageabilityPkg/Include/Library/BasePldmProtocolLib.h > create mode 100644 > Features/ManageabilityPkg/Include/Protocol/PldmProtocol.h > create mode 100644 > Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolLib= .c > create mode 100644 > Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolLib= . > uni >=20 > diff --git a/Features/ManageabilityPkg/ManageabilityPkg.dec > b/Features/ManageabilityPkg/ManageabilityPkg.dec > index 9a930d3e4b..1e9245c8dc 100644 > --- a/Features/ManageabilityPkg/ManageabilityPkg.dec > +++ b/Features/ManageabilityPkg/ManageabilityPkg.dec > @@ -48,3 +48,6 @@ > gManageabilityProtocolMctpGuid =3D { 0x76FED8F1, 0x0BE5, 0x4269, { = 0xA3, > 0x1A, 0x38, 0x0F, 0x54, 0xF1, 0xA1, 0x8A } } > # Manageability Protocol PLDM > gManageabilityProtocolPldmGuid =3D { 0x3958090D, 0x69DD, 0x4868, { = 0x9C, > 0x41, 0xC9, 0xAC, 0x31, 0xB5, 0x25, 0xC5 } } > + > +[Protocols] > + gEdkiiPldmProtocolGuid =3D { 0x60997616, 0xDB70, 0x4B5F= , { 0x86, > 0xA4, 0x09, 0x58, 0xA3, 0x71, 0x47, 0xB4 } } > diff --git a/Features/ManageabilityPkg/Include/Dsc/Manageability.dsc > b/Features/ManageabilityPkg/Include/Dsc/Manageability.dsc > index 0d868fdf4a..59549eb39a 100644 > --- a/Features/ManageabilityPkg/Include/Dsc/Manageability.dsc > +++ b/Features/ManageabilityPkg/Include/Dsc/Manageability.dsc > @@ -8,6 +8,9 @@ > [LibraryClasses] >=20 > ManageabilityTransportHelperLib|ManageabilityPkg/Library/BaseManageabilit= y > TransportHelperLib/BaseManageabilityTransportHelper.inf >=20 > +[LibraryClasses.common.DXE_DRIVER] > + > +PldmProtocolLib|ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmPr > +otocolLib.inf > + > [LibraryClasses.ARM, LibraryClasses.AARCH64] > # > # This library provides the instrinsic functions generated by a given = compiler. > diff --git a/Features/ManageabilityPkg/ManageabilityPkg.dsc > b/Features/ManageabilityPkg/ManageabilityPkg.dsc > index 6a083385fd..412029ef6c 100644 > --- a/Features/ManageabilityPkg/ManageabilityPkg.dsc > +++ b/Features/ManageabilityPkg/ManageabilityPkg.dsc > @@ -37,6 +37,7 @@ >=20 > [Components] >=20 > ManageabilityPkg/Library/ManageabilityTransportKcsLib/Dxe/DxeManageabilit= y > TransportKcs.inf > + ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolLib.inf >=20 > [LibraryClasses] >=20 > ManageabilityTransportLib|ManageabilityPkg/Library/BaseManageabilityTrans= p > ortNullLib/BaseManageabilityTransportNull.inf > diff --git > a/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolL= i > b.inf > b/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolL= i > b.inf > new file mode 100644 > index 0000000000..1233d76726 > --- /dev/null > +++ b/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProt > +++ ocolLib.inf > @@ -0,0 +1,42 @@ > +## @file > +# Instance of PLDM Protocol Library in DXE phase. > +# > +# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > +reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # # ## > + > +[Defines] > + INF_VERSION =3D 0x00010005 > + BASE_NAME =3D PldmProtocolLib > + MODULE_UNI_FILE =3D PldmProtocolLib.uni > + FILE_GUID =3D 5B1173E8-6A5A-468B-BDA4-02303530C55= C > + MODULE_TYPE =3D DXE_DRIVER > + VERSION_STRING =3D 1.0 > + LIBRARY_CLASS =3D PldmProtocolLib|DXE_RUNTIME_DRIVER > DXE_DRIVER DXE_CORE UEFI_DRIVER UEFI_APPLICATION > + > +# > +# VALID_ARCHITECTURES =3D IA32 X64 > +# > + > +[Sources] > + PldmProtocolLib.c > + > +[Packages] > + ManageabilityPkg/ManageabilityPkg.dec > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + > +[LibraryClasses] > + DebugLib > + ManageabilityTransportHelperLib > + UefiBootServicesTableLib > + > +[Guids] > + gManageabilityProtocolPldmGuid > + > +[Protocols] > + gEdkiiPldmProtocolGuid ## ALWAYS_CONSUMES > + > diff --git a/Features/ManageabilityPkg/Include/Library/BasePldmProtocolLi= b.h > b/Features/ManageabilityPkg/Include/Library/BasePldmProtocolLib.h > new file mode 100644 > index 0000000000..5523ac3a4d > --- /dev/null > +++ b/Features/ManageabilityPkg/Include/Library/BasePldmProtocolLib.h > @@ -0,0 +1,41 @@ > +/** @file > + > + This file defines EDKII Pldm Protocol library and functions. > + > + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > +reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent **/ > + > +#ifndef EDKII_PLDM_PROTOCOL_LIB_H_ > +#define EDKII_PLDM_PROTOCOL_LIB_H_ > + > +/** > + This service enables submitting commands via EDKII PLDM protocol. > + > + @param[in] PldmType PLDM message type. > + @param[in] Command PLDM Command of PLDM message type= . > + @param[in] RequestData Command Request Data. > + @param[in] RequestDataSize Size of Command Request Data. > + @param[out] ResponseData Command Response Data. The > completion code is the first byte of response data. > + @param[in, out] ResponseDataSize Size of Command Response Data. > + > + @retval EFI_SUCCESS PLDM message was successfully sent to t= ransport > interface > + and a response was successfully receive= d. > + @retval EFI_NOT_FOUND Transport interface is not found. > + @retval EFI_NOT_READY Transport interface is not ready for PL= DM > message. > + @retval EFI_DEVICE_ERROR Transport interface has an hardware err= or. > + @retval EFI_TIMEOUT Send PLDM message got a timeout. > + @retval EFI_UNSUPPORTED PLDM message is unsupported. > + @retval EFI_OUT_OF_RESOURCES The resource allocation is out of resou= rce > or data size error. > +**/ > +EFI_STATUS > +PldmSubmitCommand ( > + IN UINT8 PldmType, > + IN UINT8 Command, > + IN UINT8 *RequestData, > + IN UINT32 RequestDataSize, > + OUT UINT8 *ResponseData, > + IN OUT UINT32 *ResponseDataSize > + ); > + > +#endif > diff --git a/Features/ManageabilityPkg/Include/Protocol/PldmProtocol.h > b/Features/ManageabilityPkg/Include/Protocol/PldmProtocol.h > new file mode 100644 > index 0000000000..651997e1ad > --- /dev/null > +++ b/Features/ManageabilityPkg/Include/Protocol/PldmProtocol.h > @@ -0,0 +1,87 @@ > +/** @file > + Protocol of EDKII PLDM Protocol. > + > + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > + reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef EDKII_PLDM_PROTOCOL_H_ > +#define EDKII_PLDM_PROTOCOL_H_ > + > +#include > + > +typedef struct _EDKII_PLDM_PROTOCOL EDKII_PLDM_PROTOCOL; > + > +#define EDKII_PLDM_PROTOCOL_GUID \ > + { \ > + 0x60997616, 0xDB70, 0x4B5F, 0x86, 0xA4, 0x09, 0x58, 0xA3, 0x71, > +0x47, 0xB4 \ > + } > + > +#define EDKII_PLDM_PROTOCOL_VERSION_MAJOR 1 #define > +EDKII_PLDM_PROTOCOL_VERSION_MINOR 0 > +#define EDKII_PLDM_PROTOCOL_VERSION > ((EDKII_PLDM_PROTOCOL_VERSION_MAJOR << 8) |\ > + > +EDKII_PLDM_PROTOCOL_VERSION_MINOR) > + > +/** > + This service enables submitting commands via EDKII PLDM protocol. > + > + @param[in] This EDKII_PLDM_PROTOCOL instance. > + @param[in] PldmType PLDM message type. > + @param[in] Command PLDM Command of PLDM message type= . > + @param[in] RequestData Command Request Data. > + @param[in] RequestDataSize Size of Command Request Data. > + @param[out] ResponseData Command Response Data. The > completion code is the first byte of response data. > + @param[in, out] ResponseDataSize Size of Command Response Data. > + > + @retval EFI_SUCCESS The command byte stream was successfull= y > submit to the device and a response was successfully received. > + @retval EFI_NOT_FOUND The command was not successfully sent t= o the > device or a response was not successfully received from the device. > + @retval EFI_NOT_READY PLDM transport interface is not ready f= or PLDM > command access. > + @retval EFI_DEVICE_ERROR PLDM transport interface Device hardwar= e > error. > + @retval EFI_TIMEOUT The command time out. > + @retval EFI_UNSUPPORTED The command was not successfully sent t= o > the device. > + @retval EFI_OUT_OF_RESOURCES The resource allcation is out of resour= ce > or data size error. > + @retval EFI_INVALID_PARAMETER Both RequestData and ResponseData are > +NULL **/ typedef EFI_STATUS (EFIAPI *PLDM_SUBMIT_COMMAND)( > + IN EDKII_PLDM_PROTOCOL *This, > + IN UINT8 PldmType, > + IN UINT8 Command, > + IN UINT8 *RequestData, > + IN UINT32 RequestDataSize, > + OUT UINT8 *ResponseData, > + IN OUT UINT32 *ResponseDataSize > + ); > + > +// > +// EDKII_PLDM_PROTOCOL Version 1.0 > +// > +typedef struct { > + PLDM_SUBMIT_COMMAND PldmSubmitCommand; > +} EDKII_PLDM_PROTOCOL_V1_0; > + > +/// > +/// Definitions of EDKII_PLDM_PROTOCOL. > +/// This is a union that can accommodate the new functionalities > +defined /// in PLDM Base specification in the future. > +/// The new added function must has its own EDKII_PLDM_PROTOCOL /// > +structure with the incremental version number. > +/// e.g., EDKII_PLDM_PROTOCOL_V1_1. > +/// > +/// The new function must be added base on the last version of /// > +EDKII_PLDM_PROTOCOL to keep the backward compatability. > +/// > +typedef union { > + EDKII_PLDM_PROTOCOL_V1_0 *Version1_0; > +} EDKII_PLDM_PROTOCOL_FUNCTION; > + > +struct _EDKII_PLDM_PROTOCOL { > + UINT16 ProtocolVersion; > + EDKII_PLDM_PROTOCOL_FUNCTION Functions; > +}; > + > +extern EFI_GUID gEdkiiPldmProtocolGuid; > + > +#endif // EDKII_PLDM_PROTOCOL_H_ > diff --git > a/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolL= i > b.c > b/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolL= i > b.c > new file mode 100644 > index 0000000000..ac6225ed92 > --- /dev/null > +++ b/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProt > +++ ocolLib.c > @@ -0,0 +1,87 @@ > +/** @file > + Instance of EDKII PLDM Protocol Library in DXE phase > + > + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > + reserved.
> + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > +#include > +#include > +#include > +#include > + > +EDKII_PLDM_PROTOCOL *mEdkiiPldmProtocol =3D NULL; > + > +/** > + This service enables submitting commands via EDKII PLDM protocol. > + > + @param[in] PldmType PLDM message type. > + @param[in] Command PLDM Command of PLDM message type= . > + @param[in] RequestData Command Request Data. > + @param[in] RequestDataSize Size of Command Request Data. > + @param[out] ResponseData Command Response Data. The > completion code is the first byte of response data. > + @param[in, out] ResponseDataSize Size of Command Response Data. > + > + @retval EFI_SUCCESS PLDM message was successfully sent to t= ransport > interface > + and a response was successfully receive= d. > + @retval EFI_NOT_FOUND Transport interface is not found. > + @retval EFI_NOT_READY Transport interface is not ready for PL= DM > message. > + @retval EFI_DEVICE_ERROR Transport interface has an hardware err= or. > + @retval EFI_TIMEOUT Send PLDM message got a timeout. > + @retval EFI_UNSUPPORTED PLDM message is unsupported. > + @retval EFI_OUT_OF_RESOURCES The resource allocation is out of resou= rce > or data size error. > +**/ > +EFI_STATUS > +PldmSubmitCommand ( > + IN UINT8 PldmType, > + IN UINT8 Command, > + IN UINT8 *RequestData, > + IN UINT32 RequestDataSize, > + OUT UINT8 *ResponseData, > + IN OUT UINT32 *ResponseDataSize > + ) > +{ > + EFI_STATUS Status; > + > + if (mEdkiiPldmProtocol =3D=3D NULL) { > + Status =3D gBS->LocateProtocol ( > + &gEdkiiPldmProtocolGuid, > + NULL, > + (VOID **)&mEdkiiPldmProtocol > + ); > + if (EFI_ERROR (Status)) { > + // > + // Dxe PLDM Protocol is not installed. So, PLDM device is not pres= ent. > + // > + DEBUG ((DEBUG_ERROR, "%a: EDKII PLDM protocol is not found - %r\n"= , > Status)); > + return EFI_NOT_FOUND; > + } > + } > + > + DEBUG ((DEBUG_INFO, "%a: PLDM Type: 0x%x, Command: 0x%x\n", > + __FUNCTION__, PldmType, Command)); if ((RequestData !=3D NULL) && > (RequestDataSize !=3D 0)) { > + HelperManageabilityDebugPrint ((VOID *)RequestData, > + RequestDataSize, "PLDM PLDM application layer Type/Command specific > + request payload\n"); } > + > + Status =3D mEdkiiPldmProtocol->Functions.Version1_0->PldmSubmitCommand= ( > + mEdkiiPldmProtoco= l, > + PldmType, > + Command, > + RequestData, > + RequestDataSize, > + ResponseData, > + ResponseDataSize > + ); if > + (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_INFO, "Fails to send PLDM package - %r\n", Status)); > + return Status; > + } > + > + if ((ResponseData !=3D NULL) && (*ResponseDataSize !=3D 0)) { > + HelperManageabilityDebugPrint ((VOID *)ResponseData, > + *ResponseDataSize, "PLDM application layer response payload\n"); } > + > + return Status; > +} > diff --git > a/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolL= i > b.uni > b/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProtocolL= i > b.uni > new file mode 100644 > index 0000000000..b58a2ac146 > --- /dev/null > +++ b/Features/ManageabilityPkg/Library/PldmProtocolLibrary/Dxe/PldmProt > +++ ocolLib.uni > @@ -0,0 +1,18 @@ > +// /** @file > +// Instance of PLDM Protocol Library in DXE phase. > +// > +// Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > +reserved.
// // SPDX-License-Identifier: BSD-2-Clause-Patent // // > +**/ > + > +#string STR_MODULE_ABSTRACT > +#language en-US > +"Instance of PLDM Protocol Library in DXE phase." > + > +#string STR_MODULE_DESCRIPTION > +#language en-US > +"Instance of PLDM Protocol Library in DXE phase." > + > + > -- > 2.37.1.windows.1