[AMD Official Use Only - General]


Hi stakeholders,

Besides of below two IPMI related patch sets, we are going to implement IPMI Protocol on edk2-platforms. However, please help to review below two patches set then we can move forward.

https://edk2.groups.io/g/devel/message/98051

https://edk2.groups.io/g/devel/message/97769

The context of having above IPMI patches is here: https://github.com/tianocore/edk2/pull/3837

 

Implement IPMI Protocol driver on edk2-platforms IpmiFeaturePkg,

 

Address the confusion of IpmiSubmitCommand() function naming between edk2 IPMI Protocol and edk2-platforms IPMI Transport Protocol, also between IpmiLib and IpmiBaseLib libraries.

struct _IPMI_PROTOCOL {
  IPMI_SUBMIT_COMMAND    IpmiSubmitCommand;
};

 

struct _IPMI_TRANSPORT {
  UINT64                      Revision;
  IPMI_SEND_COMMAND           IpmiSubmitCommand;
  IPMI_GET_CHANNEL_STATUS     GetBmcStatus;
  EFI_HANDLE                  IpmiHandle;
  UINT8                       CompletionCode;
};
 
-     The function naming for IPMI_SEND_COMMAND is confusing, PPI one does the same.
 
Solution:

The process flow of IPMI functionality is:

edk2 module ==> IpmiLib (edk2) library class IpmiSubmitCommand()  ==> IPMI protocol driver(edk2-platforms) ==> IpmiBaseLib(edk2-platforms)  library class IpmiSendCommand() ==>IPMI Transport Protocol driver (edk2-platforms)

Three patches the solution,

Patch 1/3: Rename IPMI_TRANSPORT. IpmiSubmitCommand()  to IPMI_TRANSPORT. IpmiSendCommand() in the protocol structure. Also address the impacts on other edk2-platform modules.

Patch 2/3: Rename IpmiSubmitCommand() in IpmiBaseLib library to IpmiSendCommand(). Also address the impacts on other edk2-platform modules.

Patch 3/3: Implement IPMI_PROTOCOL on edk2-platform, this module has the reference of IpmiBaseLib.h from edk2-platforms and IpmiTransport.h from edk2.

 

Impacts,

On edk2-platforms: Most of impacts are on IpmiFeaturePkg itself except one impact on PuleyOpenBoardPkg.

It should be not a big problem to other edk2 modules that uses IpmiSubmitCommand() already. They can update their code to use the PEI/DXE/SMM IpmiLib library instance from edk2 and add the reference of IPMI_PROTOCOL driver from edk2-platforms in the DSC file.

 

We will proceed the code change if you (especially to IPMI owner) agree with this.

 

Regards,

Abner