Re: [edk2-devel] [edk2-platforms][PATCH V5-2] IpmiFeaturePkg:Provided multiple IPMI interface support in DXE and SMM

2023-08-02 Thread Isaac Oram
Pushed as 3037c13015016f7c398da37eabe33fb0961dc490

Note I fixed PatchCheck.py issues and committed in an order that doesn't break 
git bisect.


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




Re: [edk2-devel][edk2-platforms][PATCH V5-2] IpmiFeaturePkg:Provided multiple IPMI interface support in DXE and SMM

2023-08-02 Thread Isaac Oram
Reviewed-by: Isaac Oram 

-Original Message-
From: devel@edk2.groups.io  On Behalf Of Arun K via 
groups.io
Sent: Tuesday, July 25, 2023 8:37 AM
To: devel@edk2.groups.io; Arun K 
Cc: Oram, Isaac W ; Desimone, Nathaniel L 
; Ramkumar Krishnamoorthi ; 
Gao, Liming 
Subject: [edk2-devel][edk2-platforms][PATCH V5-2] IpmiFeaturePkg:Provided 
multiple IPMI interface support in DXE and SMM

Created IpmiTransport2 PPI/Protocol to support multiple
IPMI BMC Interface support such as KCS/BT/SSIF/IPMB with 2 API's
IpmiSubmitCommand2 & IpmiSubmitCommand2Ex.
IpmiSubmitCommand2 - This API use the default interface
(PcdDefaultSystemInterface) to send IPMI command.
IpmiSubmitCommand2Ex - This API use the specific interface type
to send IPMI command which is passed as an argument.

Cc: Isaac Oram 
Cc: Nate DeSimone 
Cc: Liming Gao 

Signed-off-by: Arun K 
---
 .../GenericIpmi/Common/IpmiBmc.h  |  13 +-
 .../GenericIpmi/Common/IpmiBmcCommon.h|  82 +--
 .../GenericIpmi/Common/IpmiHooks.c| 298 ++-
 .../GenericIpmi/Common/IpmiHooks.h| 119 -
 .../GenericIpmi/Dxe/GenericIpmi.inf   |  14 +-
 .../IpmiFeaturePkg/GenericIpmi/Dxe/IpmiInit.c | 505 +-
 .../GenericIpmi/Smm/SmmGenericIpmi.c  | 351 +---
 .../GenericIpmi/Smm/SmmGenericIpmi.inf|  12 +
 8 files changed, 1117 insertions(+), 277 deletions(-)

diff --git 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
index d306a085e5..76ee988623 100644
--- 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
+++ 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
@@ -3,6 +3,7 @@


   @copyright

   Copyright 1999 - 2021 Intel Corporation. 

+  Copyright (c) 1985 - 2023, American Megatrends International LLC. 

   SPDX-License-Identifier: BSD-2-Clause-Patent

 **/



@@ -21,17 +22,17 @@
 #include 

 #include 

 #include 

+#include 



 #include "IpmiBmcCommon.h"

 #include "KcsBmc.h"



-

 #define BMC_KCS_TIMEOUT  5   // [s] Single KSC request timeout



 //

 // IPMI Instance signature

 //

-#define SM_IPMI_BMC_SIGNATURE SIGNATURE_32 ('i', 'p', 'm', 'i')

+#define SM_IPMI_BMC_SIGNATURESIGNATURE_32 ('i', 'p', 'm', 'i')

 #define IPMI_SEND_COMMAND_MAX_RETRY  3   // Number of retries

 #define INSTANCE_FROM_SM_IPMI_BMC_THIS(a) \

   CR ( \

@@ -41,4 +42,12 @@
   SM_IPMI_BMC_SIGNATURE \

   )



+#define INSTANCE_FROM_IPMI_TRANSPORT2_THIS(a) \

+  CR ( \

+  a, \

+  IPMI_BMC_INSTANCE_DATA, \

+  IpmiTransport2, \

+  SM_IPMI_BMC_SIGNATURE \

+  )

+

 #endif // _IPMI_BMC_H_

diff --git 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
index 06eab62aae..faf6cc6685 100644
--- 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
+++ 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
@@ -3,16 +3,17 @@


   @copyright

   Copyright 1999 - 2021 Intel Corporation. 

+  Copyright (c) 1985 - 2023, American Megatrends International LLC. 

   SPDX-License-Identifier: BSD-2-Clause-Patent

 **/



 #ifndef _IPMI_COMMON_BMC_H_

 #define _IPMI_COMMON_BMC_H_



-#define MAX_TEMP_DATA 255 // 160 Modified to increase number of bytes 
transfered per command

-#define BMC_SLAVE_ADDRESS 0x20

-#define MAX_SOFT_COUNT10

-#define COMP_CODE_NORMAL  0x00

+#define MAX_TEMP_DATA  255// 160 Modified to increase number of bytes 
transfered per command

+#define BMC_SLAVE_ADDRESS  0x20

+#define MAX_SOFT_COUNT 10

+#define COMP_CODE_NORMAL   0x00



 //

 // IPMI command completion codes to check for in the UpdateErrorStatus routine.

@@ -33,8 +34,8 @@
 // D4h C Insufficient privilege, in KCS channel this indicates KCS Policy 
Control Mode is Deny All.

 // In authenticated channels this indicates invalid authentication/privilege.

 //

-#define COMP_INSUFFICIENT_PRIVILEGE   0xD4

-#define COMP_CODE_UNSPECIFIED 0xFF

+#define COMP_INSUFFICIENT_PRIVILEGE  0xD4

+#define COMP_CODE_UNSPECIFIED0xFF



 #define COMPLETION_CODES \

   { \

@@ -47,15 +48,16 @@
 // Dxe Ipmi instance data

 //

 typedef struct {

-  UINTN   Signature;

-  UINT64  KcsTimeoutPeriod;

-  UINT8   SlaveAddress;

-  BMC_STATUS  BmcStatus;

-  UINT64  ErrorStatus;

-  UINT8   SoftErrorCount;

-  UINT16  IpmiIoBase;

-  IPMI_TRANSPORT  IpmiTransport;

-  EFI_HANDLE  IpmiSmmHandle;

+  UINTN  Signature;

+  UINT64 KcsTimeoutPeriod;

+  UINT8  SlaveAddress;

+  BMC_STATUS BmcStatus;

+  UINT64 ErrorStatus;

+  UINT8  SoftErrorCount;

+  UINT1

[edk2-devel][edk2-platforms][PATCH V5-2] IpmiFeaturePkg:Provided multiple IPMI interface support in DXE and SMM

2023-07-25 Thread Arun K via groups.io
Created IpmiTransport2 PPI/Protocol to support multiple
IPMI BMC Interface support such as KCS/BT/SSIF/IPMB with 2 API's
IpmiSubmitCommand2 & IpmiSubmitCommand2Ex.
IpmiSubmitCommand2 - This API use the default interface
(PcdDefaultSystemInterface) to send IPMI command.
IpmiSubmitCommand2Ex - This API use the specific interface type
to send IPMI command which is passed as an argument.

Cc: Isaac Oram 
Cc: Nate DeSimone 
Cc: Liming Gao 

Signed-off-by: Arun K 
---
 .../GenericIpmi/Common/IpmiBmc.h  |  13 +-
 .../GenericIpmi/Common/IpmiBmcCommon.h|  82 +--
 .../GenericIpmi/Common/IpmiHooks.c| 298 ++-
 .../GenericIpmi/Common/IpmiHooks.h| 119 -
 .../GenericIpmi/Dxe/GenericIpmi.inf   |  14 +-
 .../IpmiFeaturePkg/GenericIpmi/Dxe/IpmiInit.c | 505 +-
 .../GenericIpmi/Smm/SmmGenericIpmi.c  | 351 +---
 .../GenericIpmi/Smm/SmmGenericIpmi.inf|  12 +
 8 files changed, 1117 insertions(+), 277 deletions(-)

diff --git 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
index d306a085e5..76ee988623 100644
--- 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
+++ 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmc.h
@@ -3,6 +3,7 @@


   @copyright

   Copyright 1999 - 2021 Intel Corporation. 

+  Copyright (c) 1985 - 2023, American Megatrends International LLC. 

   SPDX-License-Identifier: BSD-2-Clause-Patent

 **/



@@ -21,17 +22,17 @@
 #include 

 #include 

 #include 

+#include 



 #include "IpmiBmcCommon.h"

 #include "KcsBmc.h"



-

 #define BMC_KCS_TIMEOUT  5   // [s] Single KSC request timeout



 //

 // IPMI Instance signature

 //

-#define SM_IPMI_BMC_SIGNATURE SIGNATURE_32 ('i', 'p', 'm', 'i')

+#define SM_IPMI_BMC_SIGNATURESIGNATURE_32 ('i', 'p', 'm', 'i')

 #define IPMI_SEND_COMMAND_MAX_RETRY  3   // Number of retries

 #define INSTANCE_FROM_SM_IPMI_BMC_THIS(a) \

   CR ( \

@@ -41,4 +42,12 @@
   SM_IPMI_BMC_SIGNATURE \

   )



+#define INSTANCE_FROM_IPMI_TRANSPORT2_THIS(a) \

+  CR ( \

+  a, \

+  IPMI_BMC_INSTANCE_DATA, \

+  IpmiTransport2, \

+  SM_IPMI_BMC_SIGNATURE \

+  )

+

 #endif // _IPMI_BMC_H_

diff --git 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
index 06eab62aae..faf6cc6685 100644
--- 
a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
+++ 
b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Common/IpmiBmcCommon.h
@@ -3,16 +3,17 @@


   @copyright

   Copyright 1999 - 2021 Intel Corporation. 

+  Copyright (c) 1985 - 2023, American Megatrends International LLC. 

   SPDX-License-Identifier: BSD-2-Clause-Patent

 **/



 #ifndef _IPMI_COMMON_BMC_H_

 #define _IPMI_COMMON_BMC_H_



-#define MAX_TEMP_DATA 255 // 160 Modified to increase number of bytes 
transfered per command

-#define BMC_SLAVE_ADDRESS 0x20

-#define MAX_SOFT_COUNT10

-#define COMP_CODE_NORMAL  0x00

+#define MAX_TEMP_DATA  255// 160 Modified to increase number of bytes 
transfered per command

+#define BMC_SLAVE_ADDRESS  0x20

+#define MAX_SOFT_COUNT 10

+#define COMP_CODE_NORMAL   0x00



 //

 // IPMI command completion codes to check for in the UpdateErrorStatus routine.

@@ -33,8 +34,8 @@
 // D4h C Insufficient privilege, in KCS channel this indicates KCS Policy 
Control Mode is Deny All.

 // In authenticated channels this indicates invalid authentication/privilege.

 //

-#define COMP_INSUFFICIENT_PRIVILEGE   0xD4

-#define COMP_CODE_UNSPECIFIED 0xFF

+#define COMP_INSUFFICIENT_PRIVILEGE  0xD4

+#define COMP_CODE_UNSPECIFIED0xFF



 #define COMPLETION_CODES \

   { \

@@ -47,15 +48,16 @@
 // Dxe Ipmi instance data

 //

 typedef struct {

-  UINTN   Signature;

-  UINT64  KcsTimeoutPeriod;

-  UINT8   SlaveAddress;

-  BMC_STATUS  BmcStatus;

-  UINT64  ErrorStatus;

-  UINT8   SoftErrorCount;

-  UINT16  IpmiIoBase;

-  IPMI_TRANSPORT  IpmiTransport;

-  EFI_HANDLE  IpmiSmmHandle;

+  UINTN  Signature;

+  UINT64 KcsTimeoutPeriod;

+  UINT8  SlaveAddress;

+  BMC_STATUS BmcStatus;

+  UINT64 ErrorStatus;

+  UINT8  SoftErrorCount;

+  UINT16 IpmiIoBase;

+  IPMI_TRANSPORT IpmiTransport;

+  IPMI_TRANSPORT2IpmiTransport2;

+  EFI_HANDLE IpmiSmmHandle;

 } IPMI_BMC_INSTANCE_DATA;



 //

@@ -64,38 +66,39 @@ typedef struct {
 #define IPMI_COMMAND_HEADER_SIZE  2



 typedef struct {

-  UINT8 Lun : 2;

-  UINT8 NetFunction : 6;

-  UINT8 Command;

-  UINT8 CommandData[MAX_TEMP_DATA - IPMI_COMMAND_HEADER_SIZE];

+  UINT8Lun :