Re: [edk2-devel] [PATCH v1 1/1] IpmiFeaturePkg/GenericIpmi: Sync change from SMM
Pushed as 7afba0. -Original Message- From: Huang, Li-Xia Sent: Tuesday, December 5, 2023 11:00 PM To: devel@edk2.groups.io Cc: Abner Chang ; Desimone, Nathaniel L Subject: [PATCH v1 1/1] IpmiFeaturePkg/GenericIpmi: Sync change from SMM Sync change from SMM to StandaloneMm GenericIpmi driver. Update SmmIpmbInterface and SmmSsifInterface Lib to support MM_STANDALONE. And Format code with uncrustify. Cc: Abner Chang Cc: Nate DeSimone Signed-off-by: Lixia Huang --- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c | 315 +--- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/IpmbInterfaceLib/SmmIpmbInterfaceLib.c | 4 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/SsifInterfaceLib/SmmSsifInterfaceLib.c | 64 ++-- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.inf | 10 + Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Include/IpmiFeature.dsc | 2 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/IpmbInterfaceLib/SmmIpmbInterfaceLib.inf | 4 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/SsifInterfaceLib/SmmSsifInterfaceLib.inf | 4 +- 7 files changed, 326 insertions(+), 77 deletions(-) diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c index d808e2517c99..1b9841e4b745 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Stan +++ daloneMm/StandaloneMmGenericIpmi.c @@ -19,17 +19,157 @@ #include #include #include +#include #include #include "IpmiHooks.h" #include "IpmiBmcCommon.h" #include "IpmiBmc.h" -IPMI_BMC_INSTANCE_DATA *mIpmiInstance; -EFI_HANDLE mHandle; +IPMI_BMC_INSTANCE_DATA *mIpmiInstance; +EFI_HANDLE mIpmiTransportHandle; +EFI_HANDLE mIpmiTransport2Handle; /** + +Routine Description: + Initialize the API and parameters for IPMI Transport2 Instance + +Arguments: + IpmiInstance- Pointer to IPMI Instance. + +Returns: + VOID- Nothing. + +**/ +VOID +InitIpmiTransport2 ( + IN IPMI_BMC_INSTANCE_DATA *IpmiInstance + ) +{ + IpmiInstance->IpmiTransport2.InterfaceType = FixedPcdGet8 (PcdDefaultSystemInterface); + IpmiInstance->IpmiTransport2.IpmiTransport2BmcStatus = BmcStatusOk; + IpmiInstance->IpmiTransport2.IpmiSubmitCommand2 = IpmiSendCommand2; + IpmiInstance->IpmiTransport2.IpmiSubmitCommand2Ex= IpmiSendCommand2Ex; + + if (FixedPcdGet8 (PcdBtInterfaceSupport) == 1) { +InitBtInterfaceData (>IpmiTransport2); } + + if (FixedPcdGet8 (PcdSsifInterfaceSupport) == 1) { +InitSsifInterfaceData (>IpmiTransport2); } + + if (FixedPcdGet8 (PcdIpmbInterfaceSupport) == 1) { +InitIpmbInterfaceData (>IpmiTransport2); + } +} + +/** + +Routine Description: + Notify call back to initialize the interfaces and install SMM IPMI + protocol. + +Arguments: + Protocol- Pointer to the protocol guid. + Interface - Pointer to the protocol instance. + Handle - Handle on which the protocol is installed. + +Returns: + Status of Notify call back. + +**/ +EFI_STATUS +EFIAPI +SmmNotifyCallback ( + IN CONST EFI_GUID*Protocol, + INVOID*Interface, + INEFI_HANDLE Handle + ) +{ + EFI_STATUSStatus; + IPMI_INTERFACE_STATE InterfaceState; + + InterfaceState = IpmiInterfaceNotReady; + + if (FixedPcdGet8 (PcdSsifInterfaceSupport) == 1) { +InitSsifInterfaceData (>IpmiTransport2); + +if (mIpmiInstance->IpmiTransport2.Interface.Ssif.InterfaceState == IpmiInterfaceInitialized) { + InterfaceState = IpmiInterfaceInitialized; +} + } + + if (FixedPcdGet8 (PcdIpmbInterfaceSupport) == 1) { +InitIpmbInterfaceData (>IpmiTransport2); } + + if (mIpmiInstance->IpmiTransport2.Interface.Ipmb.InterfaceState == IpmiInterfaceInitialized) { +InterfaceState = IpmiInterfaceInitialized; } + + if (InterfaceState != IpmiInterfaceInitialized) { +return EFI_SUCCESS; + } + + // Default Interface data should be initialized to install Ipmi Transport2 Protocol. + if (InterfaceState == IpmiInterfaceInitialized) { +mIpmiTransport2Handle = NULL; +Status= gMmst->MmInstallProtocolInterface ( + , + , + EFI_NATIVE_INTERFACE, + >IpmiTransport2 +
Re: [edk2-devel] [PATCH v1 1/1] IpmiFeaturePkg/GenericIpmi: Sync change from SMM
Reviewed-by: Nate DeSimone -Original Message- From: Huang, Li-Xia Sent: Tuesday, December 5, 2023 11:00 PM To: devel@edk2.groups.io Cc: Abner Chang ; Desimone, Nathaniel L Subject: [PATCH v1 1/1] IpmiFeaturePkg/GenericIpmi: Sync change from SMM Sync change from SMM to StandaloneMm GenericIpmi driver. Update SmmIpmbInterface and SmmSsifInterface Lib to support MM_STANDALONE. And Format code with uncrustify. Cc: Abner Chang Cc: Nate DeSimone Signed-off-by: Lixia Huang --- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c | 315 +--- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/IpmbInterfaceLib/SmmIpmbInterfaceLib.c | 4 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/SsifInterfaceLib/SmmSsifInterfaceLib.c | 64 ++-- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.inf | 10 + Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Include/IpmiFeature.dsc | 2 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/IpmbInterfaceLib/SmmIpmbInterfaceLib.inf | 4 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/SsifInterfaceLib/SmmSsifInterfaceLib.inf | 4 +- 7 files changed, 326 insertions(+), 77 deletions(-) diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c index d808e2517c99..1b9841e4b745 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/Stan +++ daloneMm/StandaloneMmGenericIpmi.c @@ -19,17 +19,157 @@ #include #include #include +#include #include #include "IpmiHooks.h" #include "IpmiBmcCommon.h" #include "IpmiBmc.h" -IPMI_BMC_INSTANCE_DATA *mIpmiInstance; -EFI_HANDLE mHandle; +IPMI_BMC_INSTANCE_DATA *mIpmiInstance; +EFI_HANDLE mIpmiTransportHandle; +EFI_HANDLE mIpmiTransport2Handle; /** + +Routine Description: + Initialize the API and parameters for IPMI Transport2 Instance + +Arguments: + IpmiInstance- Pointer to IPMI Instance. + +Returns: + VOID- Nothing. + +**/ +VOID +InitIpmiTransport2 ( + IN IPMI_BMC_INSTANCE_DATA *IpmiInstance + ) +{ + IpmiInstance->IpmiTransport2.InterfaceType = FixedPcdGet8 (PcdDefaultSystemInterface); + IpmiInstance->IpmiTransport2.IpmiTransport2BmcStatus = BmcStatusOk; + IpmiInstance->IpmiTransport2.IpmiSubmitCommand2 = IpmiSendCommand2; + IpmiInstance->IpmiTransport2.IpmiSubmitCommand2Ex= IpmiSendCommand2Ex; + + if (FixedPcdGet8 (PcdBtInterfaceSupport) == 1) { +InitBtInterfaceData (>IpmiTransport2); } + + if (FixedPcdGet8 (PcdSsifInterfaceSupport) == 1) { +InitSsifInterfaceData (>IpmiTransport2); } + + if (FixedPcdGet8 (PcdIpmbInterfaceSupport) == 1) { +InitIpmbInterfaceData (>IpmiTransport2); + } +} + +/** + +Routine Description: + Notify call back to initialize the interfaces and install SMM IPMI + protocol. + +Arguments: + Protocol- Pointer to the protocol guid. + Interface - Pointer to the protocol instance. + Handle - Handle on which the protocol is installed. + +Returns: + Status of Notify call back. + +**/ +EFI_STATUS +EFIAPI +SmmNotifyCallback ( + IN CONST EFI_GUID*Protocol, + INVOID*Interface, + INEFI_HANDLE Handle + ) +{ + EFI_STATUSStatus; + IPMI_INTERFACE_STATE InterfaceState; + + InterfaceState = IpmiInterfaceNotReady; + + if (FixedPcdGet8 (PcdSsifInterfaceSupport) == 1) { +InitSsifInterfaceData (>IpmiTransport2); + +if (mIpmiInstance->IpmiTransport2.Interface.Ssif.InterfaceState == IpmiInterfaceInitialized) { + InterfaceState = IpmiInterfaceInitialized; +} + } + + if (FixedPcdGet8 (PcdIpmbInterfaceSupport) == 1) { +InitIpmbInterfaceData (>IpmiTransport2); } + + if (mIpmiInstance->IpmiTransport2.Interface.Ipmb.InterfaceState == IpmiInterfaceInitialized) { +InterfaceState = IpmiInterfaceInitialized; } + + if (InterfaceState != IpmiInterfaceInitialized) { +return EFI_SUCCESS; + } + + // Default Interface data should be initialized to install Ipmi Transport2 Protocol. + if (InterfaceState == IpmiInterfaceInitialized) { +mIpmiTransport2Handle = NULL; +Status= gMmst->MmInstallProtocolInterface ( + , + , + EFI_NATIVE_INTERFACE, + >IpmiTransport2 +
[edk2-devel] [PATCH v1 1/1] IpmiFeaturePkg/GenericIpmi: Sync change from SMM
Sync change from SMM to StandaloneMm GenericIpmi driver. Update SmmIpmbInterface and SmmSsifInterface Lib to support MM_STANDALONE. And Format code with uncrustify. Cc: Abner Chang Cc: Nate DeSimone Signed-off-by: Lixia Huang --- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c | 315 +--- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/IpmbInterfaceLib/SmmIpmbInterfaceLib.c | 4 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/SsifInterfaceLib/SmmSsifInterfaceLib.c | 64 ++-- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.inf | 10 + Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Include/IpmiFeature.dsc | 2 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/IpmbInterfaceLib/SmmIpmbInterfaceLib.inf | 4 +- Features/Intel/OutOfBandManagement/IpmiFeaturePkg/Library/BmcInterfaceCommonAccess/SsifInterfaceLib/SmmSsifInterfaceLib.inf | 4 +- 7 files changed, 326 insertions(+), 77 deletions(-) diff --git a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c index d808e2517c99..1b9841e4b745 100644 --- a/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c +++ b/Features/Intel/OutOfBandManagement/IpmiFeaturePkg/GenericIpmi/StandaloneMm/StandaloneMmGenericIpmi.c @@ -19,17 +19,157 @@ #include #include #include +#include #include #include "IpmiHooks.h" #include "IpmiBmcCommon.h" #include "IpmiBmc.h" -IPMI_BMC_INSTANCE_DATA *mIpmiInstance; -EFI_HANDLE mHandle; +IPMI_BMC_INSTANCE_DATA *mIpmiInstance; +EFI_HANDLE mIpmiTransportHandle; +EFI_HANDLE mIpmiTransport2Handle; /** + +Routine Description: + Initialize the API and parameters for IPMI Transport2 Instance + +Arguments: + IpmiInstance- Pointer to IPMI Instance. + +Returns: + VOID- Nothing. + +**/ +VOID +InitIpmiTransport2 ( + IN IPMI_BMC_INSTANCE_DATA *IpmiInstance + ) +{ + IpmiInstance->IpmiTransport2.InterfaceType = FixedPcdGet8 (PcdDefaultSystemInterface); + IpmiInstance->IpmiTransport2.IpmiTransport2BmcStatus = BmcStatusOk; + IpmiInstance->IpmiTransport2.IpmiSubmitCommand2 = IpmiSendCommand2; + IpmiInstance->IpmiTransport2.IpmiSubmitCommand2Ex= IpmiSendCommand2Ex; + + if (FixedPcdGet8 (PcdBtInterfaceSupport) == 1) { +InitBtInterfaceData (>IpmiTransport2); + } + + if (FixedPcdGet8 (PcdSsifInterfaceSupport) == 1) { +InitSsifInterfaceData (>IpmiTransport2); + } + + if (FixedPcdGet8 (PcdIpmbInterfaceSupport) == 1) { +InitIpmbInterfaceData (>IpmiTransport2); + } +} + +/** + +Routine Description: + Notify call back to initialize the interfaces and install SMM IPMI + protocol. + +Arguments: + Protocol- Pointer to the protocol guid. + Interface - Pointer to the protocol instance. + Handle - Handle on which the protocol is installed. + +Returns: + Status of Notify call back. + +**/ +EFI_STATUS +EFIAPI +SmmNotifyCallback ( + IN CONST EFI_GUID*Protocol, + INVOID*Interface, + INEFI_HANDLE Handle + ) +{ + EFI_STATUSStatus; + IPMI_INTERFACE_STATE InterfaceState; + + InterfaceState = IpmiInterfaceNotReady; + + if (FixedPcdGet8 (PcdSsifInterfaceSupport) == 1) { +InitSsifInterfaceData (>IpmiTransport2); + +if (mIpmiInstance->IpmiTransport2.Interface.Ssif.InterfaceState == IpmiInterfaceInitialized) { + InterfaceState = IpmiInterfaceInitialized; +} + } + + if (FixedPcdGet8 (PcdIpmbInterfaceSupport) == 1) { +InitIpmbInterfaceData (>IpmiTransport2); + } + + if (mIpmiInstance->IpmiTransport2.Interface.Ipmb.InterfaceState == IpmiInterfaceInitialized) { +InterfaceState = IpmiInterfaceInitialized; + } + + if (InterfaceState != IpmiInterfaceInitialized) { +return EFI_SUCCESS; + } + + // Default Interface data should be initialized to install Ipmi Transport2 Protocol. + if (InterfaceState == IpmiInterfaceInitialized) { +mIpmiTransport2Handle = NULL; +Status= gMmst->MmInstallProtocolInterface ( + , + , + EFI_NATIVE_INTERFACE, + >IpmiTransport2 + ); + } + + ASSERT_EFI_ERROR (Status); + return EFI_SUCCESS; +} + +/** + +Routine Description: + Registers Protocol call back. + +Arguments: + ProtocolGuid- Pointer to Protocol GUID to register call back. + +Returns: + Status. + +**/