[AMD Official Use Only - General] > -----Original Message----- > From: Tinh Nguyen > Sent: Thursday, March 9, 2023 11:14 PM > To: devel@edk2.groups.io; Chang, Abner > Subject: Re: [edk2-devel] [edk2-platforms][PATCH V2 0/8] Introduce > ManageabilityPkg > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > Hi Abner, > > I'm not sure if I understand this module completely. > Hi Tinh, > This module is another IPMI solution? we will utilize either ManageabilityPkg > (using IPMI protocol specified in the EDK2 repo) or IpmiFeaturePkg (using > IpmiTransportProtocol). How do I use IpmiCommandLib > (IpmiFeaturePkg/Library/IpmiCommandLib/IpmiCommandLib.inf) in > combined with ManageabilityPkg? The context is: We are building the driver stack for the system manageability industry standard protocols such as PLDM, MCTP and IPMI that can be bind with the disparate transport interfaces such KCS, I2C, I3C, PCI VDM and etc. Because Intel had IPMI implementation under IpmiFeaturePkg, so the original thought is to relocate the one from IpmiFeaturePkg to ManageabilityPkg. This proposal was agreed by Isaac who is one of the maintainers for IpmiFeaturePkg. After the v1 patch was set, Isaac suggested to create a new IPMI driver instead of relocating the one under IpmiFeaturePkg. Besides of the reason of keeping backward compatibility, he also thinks the one under IpmiFeaturePkg is old. Plus the IpmiFeaturePkg IPMI driver is bind with KCS which is not flexible because IPMI can be transferred over kinds of transport interfaces. edk2 already had the IPMI_PROTOCOL (not UEFI spec) definition and the corresponding libraries under MdeModulePkg, thus The IPMI driver under ManageabilityPkg is created to follow the design of IPMI_PROTOCOL and those libraries. IpmiCommandLib and other IPMI drivers/libraries under IpmiFeaturePkg should be also relocated (or clone for backward compatible) to ManageabilityPkg later. You can still use IpmiCommandLib, the function IpmiSubmitCommand is provided by Dxe/Pei/SmmipmilibIpmiprotocol libraries under MdeModulePkg. Then it invokes IPMI_PROTOCOL provided by IPMI drivers under ManageabilityPkg, then the packet sent over the transport interface library such as ManageabilityTransportKcsLib or others. MCTP driver will use the same ManageabilityTransportKcsLib library, so there is no transport interface bind with any protocol drivers. > > Another question, you don't use "Transport Protocol" and "Protocol Driver" > in the KCS ManageabilityTransportLib you implement for reference because > edk2 does not define a protocol for KCS , right? Correct. > > However, if I want to support other interfaces, I should build > "ManageabilityTransportLib" using the protocol provided by the PI or UEFI > specifications. That is depends on the implementation of transport library. If says I2C, then you can have a transport library that invoke to SMBUS protocol driver if you have that driver for your platform. I attach a diagram for your reference. Thanks Abner > > Thanks, > > - Tinh > > On 3/8/2023 9:16 PM, Chang, Abner via groups.io wrote: > > From: Abner Chang > > > > edk2 ManageabilityPkg is introduced to provide edk2 drivers and > > libraries for industry platform management standards, such as PLDM > > (Platform Level Data Model), MCTP (Management Component Transfer > > Protocol), IPMI (Intelligent Platform Management Interface) and > > others. > > The framework of ManageabilityPkg is designed to flexibly support the > > transport interfaces for above industry standards, the transport > > interfaces such as KCS or I2C for IPMI, PCI VDM (Vendor Defined > > Message), I2C or KCS for MCTP, or the OEM proprietary transports. > > Please check the Readme file for the design guidance: > > https://github.com/changab/edk2- > platforms/blob/Manageability_IPMI_upst > > ream/Features/ManageabilityPkg/Readme.md > > > > In V2: Fix some issues on below files, > > 1. Features/ManageabilityPkg/Library/Common/KcsCommon.c > > 2. Features/ManageabilityPkg/Library/Dxe/ManageabilityTransportKcs.c > > 3. > > > Features/ManageabilityPkg/Universal/IpmiProtocol/Common/IpmiprotocolC > o > > mmon.c > > > > In V1, we had implemented, > > - KCS manageability transport library > > - Manageability library helper library > > - IPMI PEI/DXE/SMM protocol implementations > > > > Next upstream would be edk2 MCTP_PROTOCOL implementation that also > > consumes the manageability transport libraries. > > > > Signed-off-by: Abner Chang > > Cc: Abdul Lateef Attar > > Cc: Leif Lindholm > > Cc: Michael D Kinney > > Cc: Liming Gao > > Cc: Isaac Oram > > Cc: Nickle Wang > > > > Abner Chang (8): > > ManageabilityPkg: Add Readme file > > ManageabilityPkg: Initial package > > ManageabilityPkg: Add NULL ManageabilityTransportLib > > ManageabilityPkg: Add ManageabilityTransportHelperLib > > ManageabilityPkg/ManageabilityTransportKcsLib > > ManageabilityPkg: Implement Ipmi Protocol/Ppi > > ManageabilityPkg: Add IpmiProtocol to Manageability Package > > edk2-platforms: Maintainers.txt > > > > .../ManageabilityPkg/ManageabilityPkg.dec | 48 ++ > > .../Include/Dsc/Manageability.dsc | 25 + > > .../ManageabilityPkg/ManageabilityPkg.dsc | 45 ++ > > .../BaseManageabilityTransportHelper.inf | 40 + > > .../BaseManageabilityTransportNull.inf | 28 + > > .../Dxe/DxeManageabilityTransportKcs.inf | 44 + > > .../IpmiProtocol/Dxe/IpmiProtocolDxe.inf | 50 ++ > > .../Universal/IpmiProtocol/Pei/IpmiPpiPei.inf | 51 ++ > > .../IpmiProtocol/Smm/IpmiProtocolSmm.inf | 52 ++ > > .../Library/ManageabilityTransportHelperLib.h | 93 +++ > > .../Library/ManageabilityTransportIpmiLib.h | 24 + > > .../Library/ManageabilityTransportLib.h | 335 ++++++++ > > .../Common/ManageabilityTransportKcs.h | 106 +++ > > .../IpmiProtocol/Common/IpmiProtocolCommon.h | 108 +++ > > .../BaseManageabilityTransportHelper.c | 242 ++++++ > > .../BaseManageabilityTransportNull.c | 64 ++ > > .../Common/KcsCommon.c | 480 +++++++++++ > > .../Dxe/ManageabilityTransportKcs.c | 384 +++++++++ > > .../IpmiProtocol/Common/IpmiProtocolCommon.c | 247 ++++++ > > .../Universal/IpmiProtocol/Dxe/IpmiProtocol.c | 177 +++++ > > .../Universal/IpmiProtocol/Pei/IpmiPpi.c | 151 ++++ > > .../Universal/IpmiProtocol/Smm/IpmiProtocol.c | 147 ++++ > > Features/ManageabilityPkg/Readme.md | 177 +++++ > > .../Media/ManageabilityDriverStack.svg | 752 ++++++++++++++++++ > > .../BaseManageabilityTransportHelper.uni | 13 + > > .../BaseManageabilityTransportNull.uni | 13 + > > .../Dxe/ManageabilityTransportKcs.uni | 13 + > > Maintainers.txt | 11 +- > > 28 files changed, 3918 insertions(+), 2 deletions(-) > > create mode 100644 Features/ManageabilityPkg/ManageabilityPkg.dec > > create mode 100644 > Features/ManageabilityPkg/Include/Dsc/Manageability.dsc > > create mode 100644 Features/ManageabilityPkg/ManageabilityPkg.dsc > > create mode 100644 > Features/ManageabilityPkg/Library/BaseManageabilityTransportHelperLib/B > aseManageabilityTransportHelper.inf > > create mode 100644 > Features/ManageabilityPkg/Library/BaseManageabilityTransportNullLib/Bas > eManageabilityTransportNull.inf > > create mode 100644 > Features/ManageabilityPkg/Library/ManageabilityTransportKcsLib/Dxe/Dxe > ManageabilityTransportKcs.inf > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Dxe/IpmiProtocolDxe.in > f > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Pei/IpmiPpiPei.inf > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Smm/IpmiProtocolSmm > .inf > > create mode 100644 > Features/ManageabilityPkg/Include/Library/ManageabilityTransportHelperLi > b.h > > create mode 100644 > Features/ManageabilityPkg/Include/Library/ManageabilityTransportIpmiLib. > h > > create mode 100644 > Features/ManageabilityPkg/Include/Library/ManageabilityTransportLib.h > > create mode 100644 > Features/ManageabilityPkg/Library/ManageabilityTransportKcsLib/Common > /ManageabilityTransportKcs.h > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Common/IpmiProtocolC > ommon.h > > create mode 100644 > Features/ManageabilityPkg/Library/BaseManageabilityTransportHelperLib/B > aseManageabilityTransportHelper.c > > create mode 100644 > Features/ManageabilityPkg/Library/BaseManageabilityTransportNullLib/Bas > eManageabilityTransportNull.c > > create mode 100644 > Features/ManageabilityPkg/Library/ManageabilityTransportKcsLib/Common > /KcsCommon.c > > create mode 100644 > Features/ManageabilityPkg/Library/ManageabilityTransportKcsLib/Dxe/Man > ageabilityTransportKcs.c > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Common/IpmiProtocolC > ommon.c > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Dxe/IpmiProtocol.c > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Pei/IpmiPpi.c > > create mode 100644 > Features/ManageabilityPkg/Universal/IpmiProtocol/Smm/IpmiProtocol.c > > create mode 100644 Features/ManageabilityPkg/Readme.md > > create mode 100644 > Features/ManageabilityPkg/Documents/Media/ManageabilityDriverStack.sv > g > > create mode 100644 > Features/ManageabilityPkg/Library/BaseManageabilityTransportHelperLib/B > aseManageabilityTransportHelper.uni > > create mode 100644 > Features/ManageabilityPkg/Library/BaseManageabilityTransportNullLib/Bas > eManageabilityTransportNull.uni > > create mode 100644 > > > Features/ManageabilityPkg/Library/ManageabilityTransportKcsLib/Dxe/Man > ageabilityTransportKcs.uni > >