In looking at the code, this is what I see:

edk2:
        There is an IpmiLib.h library class which abstracts the 
IpmiPpi.h/IpmiProtocol.h use
        There is an IpmiPpi.h/IpmiProtocol.h which provide an interface to send 
a command "via IPMI"
        Current IpmiPpi.h/IpmiProtocol.h implementations use IpmiBaseLib 
library class to send commands

edk2-platforms/Features/Intel/OutOfBandManagement/IpmiFeaturePkg:
        There is an IpmiBaseLib library class which abstracts 
IpmiTransportPpi.h/IpmiTransportProtocol.h use
        There is an IpmiTransportPpi.h/IpmiTransportProtocol.h that abstracts 
the transport protocol. 
        Currently IpmiTransportPpi.h/IpmiTransportProtocol.h are implemented in 
"GenericIpmi".

It appears to me that they are meant to be the same API.  The IpmiFeaturePkg 
transport version adds a function to GetBmcStatus, but it seems like 
IpmiSubmitCommand is meant to be the same function throughout.
I don't find any use of the GetBmcStatus function that is in the IpmiFeaturePkg 
but not the edk2 API.  I am not sure what to make of that.  I think we need 
more feedback from current consumers to resolve that.


When I look at our internal reference version which is an ancestor to the 
edk2-platforms/Feature/Intel.../IpmiFeaturePkg version, there is no use of the 
IpmiLib.h/IpmiPpi.h/IpmiProtocol.h.  There are additional fields in interfaces, 
like GetBmcStatus and data values, but they seem to have been redesigned out 
when open sourcing the interfaces.


My main questions:  
To your understanding, are the IpmiLib.h/IpmiPpi.h/IpmiProtocol.h and the 
IpmiBaseLib.h/IpmiTransportPpi.h/IpmiTransportProtocol.h simply two versions of 
basically the same with a library API abstracting a dynamic phase specific IPMI 
transport API?
Why does ManageabilityPkg use IpmiBaseLib and not IpmiLib?  Is it more than a 
temporary solution?


High level feedback:
0001 - I think we should not make this change.  It impacts any existing users 
for no reason I can justify.
0002 - Not sure - per my understanding of the stack, it doesn't quite fit the 
code in an obvious way.
0003 - More description of the design and duplication, the roles of the library 
class and the PPI/protocols, and the relationship to other IPMI code in the 
repos.
0004 - Minor feedback only
0005/0006 - I think that we should skip the step of using IpmiBaseLib and just 
implement the modified version of GenericIpmi to support the edk2 API stack 
design.

I will send more specific details in response to each commit shortly.

Regards,
Isaac

-----Original Message-----
From: abner.ch...@amd.com <abner.ch...@amd.com> 
Sent: Tuesday, February 7, 2023 8:22 AM
To: devel@edk2.groups.io
Cc: Gao, Liming <gaolim...@byosoft.com.cn>; Oram, Isaac W 
<isaac.w.o...@intel.com>; Desimone, Nathaniel L 
<nathaniel.l.desim...@intel.com>; Nickle Wang <nick...@nvidia.com>; Igor 
Kulchytskyy <ig...@ami.com>; Abdul Lateef Attar <abdat...@amd.com>; Leif 
Lindholm <quic_llind...@quicinc.com>; Kinney, Michael D 
<michael.d.kin...@intel.com>
Subject: [edk2-platforms][PATCH 0/7] Implementation of IPMI Protocol

From: Abner Chang <abner.ch...@amd.com>

This change implementes IPMI Protocol and PPI in the new introduced 
ManageabilityPkg (described in below email)
https://edk2.groups.io/g/devel/message/95579?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3ACreated%2C%2CManageability%2C20%2C2%2C0%2C94572748

BZ #4336:
The change also fixes the confusion (Patch 1/7) of IpmiSubmitCommand() deinfed 
in IPMI Transport protocol.

You can skip reviewing on patch 2/7 as it is an image file.

Signed-off-by: Abner Chang <abner.ch...@amd.com>
Cc: Liming Gao <gaolim...@byosoft.com.cn>
Cc: Isaac Oram <isaac.w.o...@intel.com>
Cc: Nate DeSimone <nathaniel.l.desim...@intel.com>
Cc: Nickle Wang <nick...@nvidia.com>
Cc: Igor Kulchytskyy <ig...@ami.com>
Cc: Abdul Lateef Attar <abdat...@amd.com>
Cc: Leif Lindholm <quic_llind...@quicinc.com>
Cc: Michael D Kinney <michael.d.kin...@intel.com>

Abner Chang (7):
  IpmiFeaturePkg: Rename IpmiSubmitCommand function
  ManageabilityPkg: Add diagrams
  ManageabilityPkg: Add Readme file
  ManageabilityPkg: Initial package
  ManageabilityPkg: Implement Ipmi Protocol/Ppi
  IpmiProtocol: Add to Manageability Package
  edk2-platforms: Maintainers.txt

 .../ManageabilityPkg/ManageabilityPkg.dec     |  18 ++++
 .../Include/CommonLibs.dsc.inc                |  52 +++++++++
 .../ManageabilityPkg/ManageabilityPkg.dsc     |  27 +++++
 .../IpmiProtocol/Dxe/IpmiProtocolDxe.inf      |  37 +++++++
 .../Universal/IpmiProtocol/Pei/IpmiPpiPei.inf |  38 +++++++
 .../IpmiProtocol/Smm/IpmiProtocolSmm.inf      |  40 +++++++
 .../Include/Library/IpmiBaseLib.h             |   2 +-
 .../Include/Ppi/IpmiTransportPpi.h            |   2 +-
 .../Include/Protocol/IpmiTransportProtocol.h  |   2 +-
 .../IpmiFeaturePkg/GenericIpmi/Dxe/IpmiInit.c |   2 +-
 .../GenericIpmi/Pei/PeiGenericIpmi.c          |   2 +-
 .../GenericIpmi/Smm/SmmGenericIpmi.c          |   2 +-
 .../Library/IpmiBaseLib/IpmiBaseLib.c         |   4 +-
 .../Library/IpmiBaseLibNull/IpmiBaseLibNull.c |   2 +-
 .../IpmiCommandLib/IpmiCommandLibNetFnApp.c   |  26 ++---
 .../IpmiCommandLibNetFnChassis.c              |  12 +--
 .../IpmiCommandLibNetFnStorage.c              |  24 ++---
 .../IpmiCommandLibNetFnTransport.c            |   8 +-
 .../Library/PeiIpmiBaseLib/PeiIpmiBaseLib.c   |   4 +-
 .../Library/SmmIpmiBaseLib/SmmIpmiBaseLib.c   |   4 +-
 .../Universal/IpmiProtocol/Dxe/IpmiProtocol.c |  97 +++++++++++++++++
 .../Universal/IpmiProtocol/Pei/IpmiPpi.c      | 102 ++++++++++++++++++
 .../Universal/IpmiProtocol/Smm/IpmiProtocol.c |  98 +++++++++++++++++
 .../Ipmi/Library/IpmiLibKcs/IpmiLibKcs.c      |  12 +--
 Features/ManageabilityPkg/Readme.md           |  37 +++++++
 .../Media/ManageabilityDriverStack.svg        |   1 +
 Maintainers.txt                               |   9 +-
 27 files changed, 608 insertions(+), 56 deletions(-)  create mode 100644 
Features/ManageabilityPkg/ManageabilityPkg.dec
 create mode 100644 Features/ManageabilityPkg/Include/CommonLibs.dsc.inc
 create mode 100644 Features/ManageabilityPkg/ManageabilityPkg.dsc
 create mode 100644 
Features/ManageabilityPkg/Universal/IpmiProtocol/Dxe/IpmiProtocolDxe.inf
 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/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.svg

--
2.37.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#100253): https://edk2.groups.io/g/devel/message/100253
Mute This Topic: https://groups.io/mt/96810540/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to