* [PATCH V3 0/3] Add NULL IpmiCommandLib instance
@ 2023-01-18 1:42 Chang, Abner
2023-01-18 1:42 ` [PATCH V3 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-18 1:42 UTC (permalink / raw)
To: devel
Cc: Jian J Wang, Liming Gao, Nickle Wang, Igor Kulchytskyy,
Isaac Oram, Nate DeSimone
From: Abner Chang <abner.chang@amd.com>
BZ# 4231
In V3: Add Igor Kulchytskyy's Reviewed-by
In V2: Address the typos.
This patch adds a NULL instance of IpmiCommandLib to remove
the dependence between edk2 and edk2-platform packages.
Signed-off-by: Abner Chang <abner.chang@amd.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Isaac Oram <isaac.w.oram@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Abner Chang (3):
MdeModulePkg/Include: Add IpmiCommandLib header file
MdeModulePkg/IpmiCommandLib: Add NULL instance library
MdeModulePkg: Add IpmiCommandLib
MdeModulePkg/MdeModulePkg.dec | 5 +
MdeModulePkg/MdeModulePkg.dsc | 3 +
.../BaseIpmiCommandLibNull.inf | 34 +
MdeModulePkg/Include/Library/IpmiCommandLib.h | 683 ++++++++++++++++++
.../IpmiCommandLibNetFnApp.c | 252 +++++++
.../IpmiCommandLibNetFnChassis.c | 123 ++++
.../IpmiCommandLibNetFnStorage.c | 248 +++++++
.../IpmiCommandLibNetFnTransport.c | 100 +++
8 files changed, 1448 insertions(+)
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNull.inf
create mode 100644 MdeModulePkg/Include/Library/IpmiCommandLib.h
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnApp.c
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnChassis.c
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnStorage.c
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnTransport.c
--
2.37.1.windows.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH V3 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file
2023-01-18 1:42 [PATCH V3 0/3] Add NULL IpmiCommandLib instance Chang, Abner
@ 2023-01-18 1:42 ` Chang, Abner
2023-01-18 1:42 ` [PATCH V3 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library Chang, Abner
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-18 1:42 UTC (permalink / raw)
To: devel
Cc: Jian J Wang, Liming Gao, Nickle Wang, Igor Kulchytskyy,
Isaac Oram, Nate DeSimone
From: Abner Chang <abner.chang@amd.com>
Add IpmiCommandLib to MdeModulePkg. This header file is
copied from edk2-platforms/Features/Intel/OutOfBandManagement/
IpmiFeaturePkg\Include\Library. Having this header file in
edk2 to avoid the dependence of edk2 module with edk2-platfrom.
The NULL instance of IpmiCommandLib under MdeModulePkg has
to be implemented for the same reason.
IpmiCommandLib.h in edk2-platforms should be removed once
this patch set is merged. Expect no impacts on edk2-platforms
because MdeModulePkg is referred in INF file by all edk2
modules under edk2-platforms that use IpmiCommandLib.
Signed-off-by: Abner Chang <abner.chang@amd.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Isaac Oram <isaac.w.oram@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Reviewed-by: Isaac Oram <isaac.w.oram@intel.com>
Reviewed-by: Igor Kulchytskyy <igork@ami.com>
---
MdeModulePkg/Include/Library/IpmiCommandLib.h | 683 ++++++++++++++++++
1 file changed, 683 insertions(+)
create mode 100644 MdeModulePkg/Include/Library/IpmiCommandLib.h
diff --git a/MdeModulePkg/Include/Library/IpmiCommandLib.h b/MdeModulePkg/Include/Library/IpmiCommandLib.h
new file mode 100644
index 00000000000..7edaf36cbe5
--- /dev/null
+++ b/MdeModulePkg/Include/Library/IpmiCommandLib.h
@@ -0,0 +1,683 @@
+/** @file
+ This library abstract how to send/receive IPMI command.
+
+Copyright (c) 2018-2021, Intel Corporation. All rights reserved.<BR>
+Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
+
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef IPMI_COMMAND_LIB_H_
+#define IPMI_COMMAND_LIB_H_
+
+#include <Uefi.h>
+#include <IndustryStandard/Ipmi.h>
+
+//
+// IPMI NetFnApp
+//
+
+/**
+ This function gets the IPMI Device ID.
+
+ @param[out] DeviceId Get device ID response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetDeviceId (
+ OUT IPMI_GET_DEVICE_ID_RESPONSE *DeviceId
+ );
+
+/**
+ This function gets the self-test result.
+
+ @param[out] SelfTestResult Self test command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelfTestResult (
+ OUT IPMI_SELF_TEST_RESULT_RESPONSE *SelfTestResult
+ );
+
+/**
+ This function resets watchdog timer.
+
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiResetWatchdogTimer (
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function sets watchdog timer.
+
+ @param[in] SetWatchdogTimer Set watchdog timer request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetWatchdogTimer (
+ IN IPMI_SET_WATCHDOG_TIMER_REQUEST *SetWatchdogTimer,
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function gets watchdog timer.
+
+ @param[out] GetWatchdogTimer Get watchdog timer response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetWatchdogTimer (
+ OUT IPMI_GET_WATCHDOG_TIMER_RESPONSE *GetWatchdogTimer
+ );
+
+/**
+ This function sets BMC global enables.
+
+ @param[in] SetBmcGlobalEnables Set BMC global enables command request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetBmcGlobalEnables (
+ IN IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST *SetBmcGlobalEnables,
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function gets BMC global enables.
+
+ @param[out] GetBmcGlobalEnables Get BMC global enables command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetBmcGlobalEnables (
+ OUT IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE *GetBmcGlobalEnables
+ );
+
+/**
+ This function clears message flag.
+
+ @param[in] ClearMessageFlagsRequest Clear message flags command request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiClearMessageFlags (
+ IN IPMI_CLEAR_MESSAGE_FLAGS_REQUEST *ClearMessageFlagsRequest,
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function gets message flag.
+
+ @param[out] GetMessageFlagsResponse Get message flags response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetMessageFlags (
+ OUT IPMI_GET_MESSAGE_FLAGS_RESPONSE *GetMessageFlagsResponse
+ );
+
+/**
+ This function gets message.
+
+ @param[out] GetMessageResponse Get message command response.
+ @param[in,out] GetMessageResponseSize The size of get message response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetMessage (
+ OUT IPMI_GET_MESSAGE_RESPONSE *GetMessageResponse,
+ IN OUT UINT32 *GetMessageResponseSize
+ );
+
+/**
+ This function sends message.
+
+ @param[in] SendMessageRequest The send message command request.
+ @param[in] SendMessageRequestSize The size of the send message command request.
+ @param[out] SendMessageResponse The send message command response.
+ @param[in,out] SendMessageResponseSize The size of the send message command response.
+ When input, the expected size of response.
+ When output, the actual size of response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSendMessage (
+ IN IPMI_SEND_MESSAGE_REQUEST *SendMessageRequest,
+ IN UINT32 SendMessageRequestSize,
+ OUT IPMI_SEND_MESSAGE_RESPONSE *SendMessageResponse,
+ IN OUT UINT32 *SendMessageResponseSize
+ );
+
+/**
+ This function gets the system UUID.
+
+ @param[out] SystemGuid The pointer to retrieve system UUID.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Others Other errors.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSystemUuid (
+ OUT EFI_GUID *SystemGuid
+ );
+
+/**
+ This function gets the channel information.
+
+ @param[in] GetChannelInfoRequest The get channel information request.
+ @param[in] GetChannelInfoResponse The get channel information response.
+ @param[in,out] GetChannelInfoResponseSize When input, the expected size of response.
+ When output, the exact size of the returned
+ response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetChannelInfo (
+ IN IPMI_GET_CHANNEL_INFO_REQUEST *GetChannelInfoRequest,
+ OUT IPMI_GET_CHANNEL_INFO_RESPONSE *GetChannelInfoResponse,
+ OUT UINT32 *GetChannelInfoResponseSize
+ );
+
+//
+// IPMI NetFnTransport
+//
+
+/**
+ This function activates SOL
+
+ @param[in] SolActivatingRequest SOL activating request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSolActivating (
+ IN IPMI_SOL_ACTIVATING_REQUEST *SolActivatingRequest,
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function sets SOL configuration parameters.
+
+ @param[in] SetConfigurationParametersRequest Set SOL configuration parameters
+ command request.
+ @param[in] SetConfigurationParametersRequestSize Size of the set SOL configuration
+ parameters command request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetSolConfigurationParameters (
+ IN IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST *SetConfigurationParametersRequest,
+ IN UINT32 SetConfigurationParametersRequestSize,
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function gets SOL configuration parameters.
+
+ @param[in] GetConfigurationParametersRequest Get SOL configuration parameters
+ command request.
+ @param[out] GetConfigurationParametersResponse Get SOL configuration parameters
+ response.
+ @param[in,out] GetConfigurationParametersResponseSize When input, the size of the expected
+ response.
+ When output, the exact size of
+ expect response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSolConfigurationParameters (
+ IN IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST *GetConfigurationParametersRequest,
+ OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationParametersResponse,
+ IN OUT UINT32 *GetConfigurationParametersResponseSize
+ );
+
+/**
+ This function gets the LAN configuration parameter.
+
+ @param[in] GetLanConfigurationParametersRequest Get LAN configuration parameters command request.
+ @param[in] GetLanConfigurationParametersResponse The response of the get LAN configuration parameters.
+ @param[in,out] GetLanConfigurationParametersSize When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+
+EFI_STATUS
+EFIAPI
+IpmiGetLanConfigurationParameters (
+ IN IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST *GetLanConfigurationParametersRequest,
+ OUT IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE *GetLanConfigurationParametersResponse,
+ IN OUT UINT32 *GetLanConfigurationParametersSize
+ );
+
+//
+// IPMI NetFnChassis
+//
+
+/**
+ This function gets chassis capability.
+
+ @param[out] GetChassisCapabilitiesResponse Gets chassis capability command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetChassisCapabilities (
+ OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE *GetChassisCapabilitiesResponse
+ );
+
+/**
+ This function gets chassis status.
+
+ @param[out] GetChassisCapabilitiesResponse The get chassis status command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetChassisStatus (
+ OUT IPMI_GET_CHASSIS_STATUS_RESPONSE *GetChassisStatusResponse
+ );
+
+/**
+ This function sends chassis control request.
+
+ @param[in] ChassisControlRequest The chassis control request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiChassisControl (
+ IN IPMI_CHASSIS_CONTROL_REQUEST *ChassisControlRequest,
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function sets power restore policy.
+
+ @param[in] SetPowerRestireRequest The set power restore policy control
+ command request.
+ @param[out] SetPowerRestireResponse The response of power restore policy.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetPowerRestorePolicy (
+ IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST *SetPowerRestireRequest,
+ OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *SetPowerRestireResponse
+ );
+
+//
+// IPMI NetFnStorage
+//
+
+/**
+ This function sets system boot option.
+
+ @param[in] BootOptionsRequest Set system boot option request.
+ @param[out] BootOptionsResponse The response of set system boot
+ option request.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetSystemBootOptions (
+ IN IPMI_SET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
+ OUT IPMI_SET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
+ );
+
+/**
+ This function gets system boot option.
+
+ @param[in] BootOptionsRequest Get system boot option request.
+ @param[out] BootOptionsResponse The response of get system boot
+ option request.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSystemBootOptions (
+ IN IPMI_GET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
+ OUT IPMI_GET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
+ );
+
+/**
+ This function gets FRU inventory area info.
+
+ @param[in] GetFruInventoryAreaInfoRequest Get FRU inventory area command request.
+ @param[out] GetFruInventoryAreaInfoResponse get FRU inventory area command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetFruInventoryAreaInfo (
+ IN IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST *GetFruInventoryAreaInfoRequest,
+ OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE *GetFruInventoryAreaInfoResponse
+ );
+
+/**
+ This function reads FRU data.
+
+ @param[in] ReadFruDataRequest Read FRU data command request.
+ @param[out] ReadFruDataResponse Read FRU data command response.
+ @param[in,out] ReadFruDataResponseSize Size of the read FRU data response.
+ When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiReadFruData (
+ IN IPMI_READ_FRU_DATA_REQUEST *ReadFruDataRequest,
+ OUT IPMI_READ_FRU_DATA_RESPONSE *ReadFruDataResponse,
+ IN OUT UINT32 *ReadFruDataResponseSize
+ );
+
+/**
+ This function gets chassis capability.
+
+ @param[in] WriteFruDataRequest Write FRU data command request.
+ @param[in] WriteFruDataRequestSize Size of the write FRU data command request.
+ @param[out] WriteFruDataResponse Write FRU data response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiWriteFruData (
+ IN IPMI_WRITE_FRU_DATA_REQUEST *WriteFruDataRequest,
+ IN UINT32 WriteFruDataRequestSize,
+ OUT IPMI_WRITE_FRU_DATA_RESPONSE *WriteFruDataResponse
+ );
+
+/**
+ This function gets SEL information.
+
+ @param[out] GetSelInfoResponse Get SEL information command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelInfo (
+ OUT IPMI_GET_SEL_INFO_RESPONSE *GetSelInfoResponse
+ );
+
+/**
+ This function gets SEL entry.
+
+ @param[in] GetSelEntryRequest Get SEL entry command request.
+ @param[out] GetSelEntryResponse Get SEL entry command response.
+ @param[in,out] GetSelEntryResponseSize Size of Get SEL entry request.
+ When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelEntry (
+ IN IPMI_GET_SEL_ENTRY_REQUEST *GetSelEntryRequest,
+ OUT IPMI_GET_SEL_ENTRY_RESPONSE *GetSelEntryResponse,
+ IN OUT UINT32 *GetSelEntryResponseSize
+ );
+
+/**
+ This function adds SEL entry.
+
+ @param[in] AddSelEntryRequest Add SEL entry command request.
+ @param[out] AddSelEntryResponse Add SEL entry command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiAddSelEntry (
+ IN IPMI_ADD_SEL_ENTRY_REQUEST *AddSelEntryRequest,
+ OUT IPMI_ADD_SEL_ENTRY_RESPONSE *AddSelEntryResponse
+ );
+
+/**
+ This function partially adds SEL entry.
+
+ @param[in] PartialAddSelEntryRequest Partial add SEL entry command request.
+ @param[in] PartialAddSelEntryRequestSize Size of partial add SEL entry command request.
+ @param[out] PartialAddSelEntryResponse Partial add SEL entry command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiPartialAddSelEntry (
+ IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST *PartialAddSelEntryRequest,
+ IN UINT32 PartialAddSelEntryRequestSize,
+ OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE *PartialAddSelEntryResponse
+ );
+
+/**
+ This function clears SEL entry.
+
+ @param[in] ClearSelRequest Clear SEL command request.
+ @param[out] ClearSelResponse Clear SEL command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiClearSel (
+ IN IPMI_CLEAR_SEL_REQUEST *ClearSelRequest,
+ OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse
+ );
+
+/**
+ This function gets SEL time.
+
+ @param[out] GetSelTimeResponse Get SEL time command response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelTime (
+ OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse
+ );
+
+/**
+ This function sets SEL time.
+
+ @param[in] SetSelTimeRequest Set SEL time command request.
+ @param[out] CompletionCode Command completion code.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetSelTime (
+ IN IPMI_SET_SEL_TIME_REQUEST *SetSelTimeRequest,
+ OUT UINT8 *CompletionCode
+ );
+
+/**
+ This function gets SDR repository information.
+
+ @param[out] GetSdrRepositoryInfoResp Get SDR repository response.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSdrRepositoryInfo (
+ OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE *GetSdrRepositoryInfoResp
+ );
+
+/**
+ This function gets SDR
+
+ @param[in] GetSdrRequest Get SDR resquest.
+ @param[out] GetSdrResponse Get SDR response.
+ @param[in,out] GetSdrResponseSize The size of get SDR response.
+ When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_SUCCESS Command is sent successfully.
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
+ @retval Other Failure.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSdr (
+ IN IPMI_GET_SDR_REQUEST *GetSdrRequest,
+ OUT IPMI_GET_SDR_RESPONSE *GetSdrResponse,
+ IN OUT UINT32 *GetSdrResponseSize
+ );
+
+#endif
--
2.37.1.windows.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH V3 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library
2023-01-18 1:42 [PATCH V3 0/3] Add NULL IpmiCommandLib instance Chang, Abner
2023-01-18 1:42 ` [PATCH V3 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
@ 2023-01-18 1:42 ` Chang, Abner
2023-01-18 1:42 ` [PATCH V3 3/3] MdeModulePkg: Add IpmiCommandLib Chang, Abner
2023-01-18 5:09 ` 回复: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance gaoliming
3 siblings, 0 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-18 1:42 UTC (permalink / raw)
To: devel
Cc: Jian J Wang, Liming Gao, Nickle Wang, Igor Kulchytskyy,
Isaac Oram, Nate DeSimone
From: Abner Chang <abner.chang@amd.com>
The NULL instance of IpmiCommandLib library under
MdeModulePkg as the default IpmiCommandLib instance
used by the modules under edk2.
Signed-off-by: Abner Chang <abner.chang@amd.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Isaac Oram <isaac.w.oram@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Reviewed-by: Isaac Oram <isaac.w.oram@intel.com>
Reviewed-by: Igor Kulchytskyy <igork@ami.com>
---
.../BaseIpmiCommandLibNull.inf | 34 +++
.../IpmiCommandLibNetFnApp.c | 252 ++++++++++++++++++
.../IpmiCommandLibNetFnChassis.c | 123 +++++++++
.../IpmiCommandLibNetFnStorage.c | 248 +++++++++++++++++
.../IpmiCommandLibNetFnTransport.c | 100 +++++++
5 files changed, 757 insertions(+)
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNull.inf
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnApp.c
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnChassis.c
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnStorage.c
create mode 100644 MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnTransport.c
diff --git a/MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNull.inf b/MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNull.inf
new file mode 100644
index 00000000000..175e1ae433c
--- /dev/null
+++ b/MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNull.inf
@@ -0,0 +1,34 @@
+## @file
+# NULL instance of IpmiCommandLib
+#
+# Component description file for IPMI Command Library.
+#
+# Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
+# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = BaseIpmiCommandLibNull
+ FILE_GUID = 63F06EF8-B78A-4E7E-823E-D11A21059669
+ MODULE_TYPE = BASE
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = IpmiCommandLib
+
+[sources]
+ IpmiCommandLibNetFnApp.c
+ IpmiCommandLibNetFnTransport.c
+ IpmiCommandLibNetFnChassis.c
+ IpmiCommandLibNetFnStorage.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+
+[LibraryClasses]
+ BaseMemoryLib
+ DebugLib
+
diff --git a/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnApp.c b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnApp.c
new file mode 100644
index 00000000000..2312e08258d
--- /dev/null
+++ b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnApp.c
@@ -0,0 +1,252 @@
+/** @file
+ IPMI Command - NetFnApp NULL instance library.
+
+ Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
+ Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+#include <Uefi.h>
+#include <IndustryStandard/Ipmi.h>
+
+/**
+ This function gets the IPMI Device ID.
+
+ @param[out] DeviceId Get device ID response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetDeviceId (
+ OUT IPMI_GET_DEVICE_ID_RESPONSE *DeviceId
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets the self-test result.
+
+ @param[out] SelfTestResult Self test command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelfTestResult (
+ OUT IPMI_SELF_TEST_RESULT_RESPONSE *SelfTestResult
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function resets watchdog timer.
+
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiResetWatchdogTimer (
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sets watchdog timer.
+
+ @param[in] SetWatchdogTimer Set watchdog timer request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetWatchdogTimer (
+ IN IPMI_SET_WATCHDOG_TIMER_REQUEST *SetWatchdogTimer,
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets watchdog timer.
+
+ @param[out] GetWatchdogTimer Get watchdog timer response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetWatchdogTimer (
+ OUT IPMI_GET_WATCHDOG_TIMER_RESPONSE *GetWatchdogTimer
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sets BMC global enables.
+
+ @param[in] SetBmcGlobalEnables Set BMC global enables command request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetBmcGlobalEnables (
+ IN IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST *SetBmcGlobalEnables,
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets BMC global enables.
+
+ @param[out] GetBmcGlobalEnables Get BMC global enables command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetBmcGlobalEnables (
+ OUT IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE *GetBmcGlobalEnables
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function clears message flag.
+
+ @param[in] ClearMessageFlagsRequest Clear message flags command Request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiClearMessageFlags (
+ IN IPMI_CLEAR_MESSAGE_FLAGS_REQUEST *ClearMessageFlagsRequest,
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets message flags.
+
+ @param[out] GetMessageFlagsResponse Get message flags response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetMessageFlags (
+ OUT IPMI_GET_MESSAGE_FLAGS_RESPONSE *GetMessageFlagsResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets message.
+
+ @param[out] GetMessageResponse Get message command response.
+ @param[in,out] GetMessageResponseSize The size of get message response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetMessage (
+ OUT IPMI_GET_MESSAGE_RESPONSE *GetMessageResponse,
+ IN OUT UINT32 *GetMessageResponseSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sends message.
+
+ @param[in] SendMessageRequest The send message command request.
+ @param[in] SendMessageRequestSize The size of the send message command request.
+ @param[out] SendMessageResponse The send message command response.
+ @param[in,out] SendMessageResponseSize The size of the send message command response.
+ When input, the expected size of response.
+ When output, the actual size of response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSendMessage (
+ IN IPMI_SEND_MESSAGE_REQUEST *SendMessageRequest,
+ IN UINT32 SendMessageRequestSize,
+ OUT IPMI_SEND_MESSAGE_RESPONSE *SendMessageResponse,
+ IN OUT UINT32 *SendMessageResponseSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets the system UUID.
+
+ @param[out] SystemGuid The pointer to retrieve system UUID.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSystemUuid (
+ OUT EFI_GUID *SystemGuid
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets the channel information.
+
+ @param[in] GetChannelInfoRequest The get channel information request.
+ @param[out] GetChannelInfoResponse The get channel information response.
+ @param[out] GetChannelInfoResponseSize When input, the expected size of response.
+ When output, the exact size of the returned
+ response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetChannelInfo (
+ IN IPMI_GET_CHANNEL_INFO_REQUEST *GetChannelInfoRequest,
+ OUT IPMI_GET_CHANNEL_INFO_RESPONSE *GetChannelInfoResponse,
+ OUT UINT32 *GetChannelInfoResponseSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
diff --git a/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnChassis.c b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnChassis.c
new file mode 100644
index 00000000000..300a9b045f5
--- /dev/null
+++ b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnChassis.c
@@ -0,0 +1,123 @@
+/** @file
+ IPMI Command - NetFnChassis NULL instance library.
+
+ Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
+ Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+#include <Uefi.h>
+#include <IndustryStandard/Ipmi.h>
+
+/**
+ This function gets chassis capability.
+
+ @param[out] GetChassisCapabilitiesResponse Gets chassis capability command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetChassisCapabilities (
+ OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE *GetChassisCapabilitiesResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets chassis status.
+
+ @param[out] GetChassisStatusResponse The get chassis status command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetChassisStatus (
+ OUT IPMI_GET_CHASSIS_STATUS_RESPONSE *GetChassisStatusResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sends chassis control request.
+
+ @param[in] ChassisControlRequest The chassis control request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiChassisControl (
+ IN IPMI_CHASSIS_CONTROL_REQUEST *ChassisControlRequest,
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sets power restore policy.
+
+ @param[in] ChassisControlRequest The set power restore policy control
+ command request.
+ @param[out] ChassisControlResponse The response of power restore policy.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetPowerRestorePolicy (
+ IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST *ChassisControlRequest,
+ OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *ChassisControlResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sets system boot option.
+
+ @param[in] BootOptionsRequest Set system boot option request.
+ @param[out] BootOptionsResponse The response of set system boot
+ option request.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetSystemBootOptions (
+ IN IPMI_SET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
+ OUT IPMI_SET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets system boot option.
+
+ @param[in] BootOptionsRequest Get system boot option request.
+ @param[out] BootOptionsResponse The response of get system boot
+ option request.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSystemBootOptions (
+ IN IPMI_GET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
+ OUT IPMI_GET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
diff --git a/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnStorage.c b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnStorage.c
new file mode 100644
index 00000000000..9e5ac959e49
--- /dev/null
+++ b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnStorage.c
@@ -0,0 +1,248 @@
+/** @file
+ IPMI Command - NetFnStorage NULL instance library.
+
+ Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
+ Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+#include <Uefi.h>
+#include <IndustryStandard/Ipmi.h>
+
+/**
+ This function gets FRU inventory area info.
+
+ @param[in] GetFruInventoryAreaInfoRequest Get FRU inventory area command request.
+ @param[out] GetFruInventoryAreaInfoResponse get FRU inventory area command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetFruInventoryAreaInfo (
+ IN IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST *GetFruInventoryAreaInfoRequest,
+ OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE *GetFruInventoryAreaInfoResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function reads FRU data.
+
+ @param[in] ReadFruDataRequest Read FRU data command request.
+ @param[out] ReadFruDataResponse Read FRU data command response.
+ @param[in,out] ReadFruDataResponseSize Size of the read FRU data response.
+ When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiReadFruData (
+ IN IPMI_READ_FRU_DATA_REQUEST *ReadFruDataRequest,
+ OUT IPMI_READ_FRU_DATA_RESPONSE *ReadFruDataResponse,
+ IN OUT UINT32 *ReadFruDataResponseSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets chassis capability.
+
+ @param[in] WriteFruDataRequest Write FRU data command request.
+ @param[in] WriteFruDataRequestSize Size of the write FRU data command request.
+ @param[out] WriteFruDataResponse Write FRU data response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiWriteFruData (
+ IN IPMI_WRITE_FRU_DATA_REQUEST *WriteFruDataRequest,
+ IN UINT32 WriteFruDataRequestSize,
+ OUT IPMI_WRITE_FRU_DATA_RESPONSE *WriteFruDataResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets SEL information.
+
+ @param[out] GetSelInfoResponse Get SEL information command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelInfo (
+ OUT IPMI_GET_SEL_INFO_RESPONSE *GetSelInfoResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets SEL entry.
+
+ @param[in] GetSelEntryRequest Get SEL entry command request.
+ @param[out] GetSelEntryResponse Get SEL entry command response.
+ @param[in,out] GetSelEntryResponseSize Size of Get SEL entry request.
+ When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelEntry (
+ IN IPMI_GET_SEL_ENTRY_REQUEST *GetSelEntryRequest,
+ OUT IPMI_GET_SEL_ENTRY_RESPONSE *GetSelEntryResponse,
+ IN OUT UINT32 *GetSelEntryResponseSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function adds SEL entry.
+
+ @param[in] AddSelEntryRequest Add SEL entry command request.
+ @param[out] AddSelEntryResponse Add SEL entry command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiAddSelEntry (
+ IN IPMI_ADD_SEL_ENTRY_REQUEST *AddSelEntryRequest,
+ OUT IPMI_ADD_SEL_ENTRY_RESPONSE *AddSelEntryResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function partially adds SEL entry.
+
+ @param[in] PartialAddSelEntryRequest Partial add SEL entry command request.
+ @param[in] PartialAddSelEntryRequestSize Size of partial add SEL entry command request.
+ @param[out] PartialAddSelEntryResponse Partial add SEL entry command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiPartialAddSelEntry (
+ IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST *PartialAddSelEntryRequest,
+ IN UINT32 PartialAddSelEntryRequestSize,
+ OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE *PartialAddSelEntryResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function clears SEL entry.
+
+ @param[in] ClearSelRequest Clear SEL command request.
+ @param[out] ClearSelResponse Clear SEL command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiClearSel (
+ IN IPMI_CLEAR_SEL_REQUEST *ClearSelRequest,
+ OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets SEL time.
+
+ @param[out] GetSelTimeResponse Get SEL time command response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSelTime (
+ OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sets SEL time.
+
+ @param[in] SetSelTimeRequest Set SEL time command request.
+ @param[out] CompletionCode Command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetSelTime (
+ IN IPMI_SET_SEL_TIME_REQUEST *SetSelTimeRequest,
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets SDR repository information.
+
+ @param[out] GetSdrRepositoryInfoResp Get SDR repository response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSdrRepositoryInfo (
+ OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE *GetSdrRepositoryInfoResp
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets SDR
+
+ @param[in] GetSdrRequest Get SDR resquest.
+ @param[out] GetSdrResponse Get SDR response.
+ @param[in,out] GetSdrResponseSize The size of get SDR response.
+ When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSdr (
+ IN IPMI_GET_SDR_REQUEST *GetSdrRequest,
+ OUT IPMI_GET_SDR_RESPONSE *GetSdrResponse,
+ IN OUT UINT32 *GetSdrResponseSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
diff --git a/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnTransport.c b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnTransport.c
new file mode 100644
index 00000000000..b45329f2400
--- /dev/null
+++ b/MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnTransport.c
@@ -0,0 +1,100 @@
+/** @file
+ IPMI Command - NetFnTransport NULL instance library.
+
+ Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR>
+ Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+#include <Uefi.h>
+#include <IndustryStandard/Ipmi.h>
+
+/**
+ This function activates SOL
+
+ @param[in] SolActivatingRequest SOL activating request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSolActivating (
+ IN IPMI_SOL_ACTIVATING_REQUEST *SolActivatingRequest,
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function sets SOL configuration parameters.
+
+ @param[in] SetConfigurationParametersRequest Set SOL configuration parameters
+ command request.
+ @param[in] SetConfigurationParametersRequestSize Size of set SOL configuration
+ parameters command request.
+ @param[out] CompletionCode The command completion code.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiSetSolConfigurationParameters (
+ IN IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST *SetConfigurationParametersRequest,
+ IN UINT32 SetConfigurationParametersRequestSize,
+ OUT UINT8 *CompletionCode
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets SOL configuration parameters.
+
+ @param[in] GetConfigurationParametersRequest Get SOL configuration parameters
+ command request.
+ @param[out] GetConfigurationParametersResponse Get SOL configuration parameters
+ response.
+ @param[in,out] GetConfigurationParametersResponseSize When input, the size of expect response.
+ When output, the exact size of
+ expect response.
+
+ @retval EFI_UNSUPPORTED Unsupported in the NULL lib.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetSolConfigurationParameters (
+ IN IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST *GetConfigurationParametersRequest,
+ OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationParametersResponse,
+ IN OUT UINT32 *GetConfigurationParametersResponseSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
+
+/**
+ This function gets the LAN configuration parameter.
+
+ @param[in] GetLanConfigurationParametersRequest Request data
+ @param[out] GetLanConfigurationParametersResponse Response data
+ @param[in,out] GetLanConfigurationParametersSize When input, the expected size of response data.
+ When out, the exact size of response data.
+
+ @retval EFI_SUCCESS Lan configuration parameter is returned in the response.
+ @retval Others Other errors.
+
+**/
+EFI_STATUS
+EFIAPI
+IpmiGetLanConfigurationParameters (
+ IN IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST *GetLanConfigurationParametersRequest,
+ OUT IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE *GetLanConfigurationParametersResponse,
+ IN OUT UINT32 *GetLanConfigurationParametersSize
+ )
+{
+ return RETURN_UNSUPPORTED;
+}
--
2.37.1.windows.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH V3 3/3] MdeModulePkg: Add IpmiCommandLib
2023-01-18 1:42 [PATCH V3 0/3] Add NULL IpmiCommandLib instance Chang, Abner
2023-01-18 1:42 ` [PATCH V3 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
2023-01-18 1:42 ` [PATCH V3 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library Chang, Abner
@ 2023-01-18 1:42 ` Chang, Abner
2023-01-18 5:09 ` 回复: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance gaoliming
3 siblings, 0 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-18 1:42 UTC (permalink / raw)
To: devel
Cc: Jian J Wang, Liming Gao, Nickle Wang, Igor Kulchytskyy,
Isaac Oram, Nate DeSimone
From: Abner Chang <abner.chang@amd.com>
Add IpmiCommandLib to MdeModulePkg DEC/DSC
files.
Signed-off-by: Abner Chang <abner.chang@amd.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Isaac Oram <isaac.w.oram@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Reviewed-by: Isaac Oram <isaac.w.oram@intel.com>
Reviewed-by: Igor Kulchytskyy <igork@ami.com>
---
MdeModulePkg/MdeModulePkg.dec | 5 +++++
MdeModulePkg/MdeModulePkg.dsc | 3 +++
2 files changed, 8 insertions(+)
diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index be5e829ca9c..9605c617b7a 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -9,6 +9,7 @@
# (C) Copyright 2016 - 2019 Hewlett Packard Enterprise Development LP<BR>
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.<BR>
+# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
@@ -117,6 +118,10 @@
#
IpmiLib|Include/Library/IpmiLib.h
+ ## @libraryclass Provides interfaces to send/receive IPMI command.
+ #
+ IpmiCommandLib|Include/Library/IpmiCommandLib.h
+
## @libraryclass Provides interfaces for platform to return root bridge information to PciHostBridgeDxe driver.
#
PciHostBridgeLib|Include/Library/PciHostBridgeLib.h
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 659482ab737..1014598f31c 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -4,6 +4,7 @@
# (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
# Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.
+# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
@@ -104,6 +105,7 @@
VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
MmUnblockMemoryLib|MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.inf
VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf
+ IpmiCommandLib|MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNull.inf
[LibraryClasses.EBC.PEIM]
IoLib|MdePkg/Library/PeiIoLibCpuIo/PeiIoLibCpuIo.inf
@@ -333,6 +335,7 @@
MdeModulePkg/Library/DxeIpmiLibIpmiProtocol/DxeIpmiLibIpmiProtocol.inf
MdeModulePkg/Library/PeiIpmiLibIpmiPpi/PeiIpmiLibIpmiPpi.inf
MdeModulePkg/Library/SmmIpmiLibSmmIpmiProtocol/SmmIpmiLibSmmIpmiProtocol.inf
+ MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNull.inf
MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf
MdeModulePkg/Library/NonDiscoverableDeviceRegistrationLib/NonDiscoverableDeviceRegistrationLib.inf
MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf
--
2.37.1.windows.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* 回复: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance
2023-01-18 1:42 [PATCH V3 0/3] Add NULL IpmiCommandLib instance Chang, Abner
` (2 preceding siblings ...)
2023-01-18 1:42 ` [PATCH V3 3/3] MdeModulePkg: Add IpmiCommandLib Chang, Abner
@ 2023-01-18 5:09 ` gaoliming
2023-01-19 3:59 ` Chang, Abner
3 siblings, 1 reply; 6+ messages in thread
From: gaoliming @ 2023-01-18 5:09 UTC (permalink / raw)
To: devel, abner.chang
Cc: 'Jian J Wang', 'Nickle Wang',
'Igor Kulchytskyy', 'Isaac Oram',
'Nate DeSimone'
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Chang, Abner
> via groups.io
> 发送时间: 2023年1月18日 9:43
> 收件人: devel@edk2.groups.io
> 抄送: Jian J Wang <jian.j.wang@intel.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Nickle Wang <nicklew@nvidia.com>; Igor
> Kulchytskyy <igork@ami.com>; Isaac Oram <isaac.w.oram@intel.com>; Nate
> DeSimone <nathaniel.l.desimone@intel.com>
> 主题: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance
>
> From: Abner Chang <abner.chang@amd.com>
>
> BZ# 4231
>
> In V3: Add Igor Kulchytskyy's Reviewed-by
> In V2: Address the typos.
>
> This patch adds a NULL instance of IpmiCommandLib to remove
> the dependence between edk2 and edk2-platform packages.
>
> Signed-off-by: Abner Chang <abner.chang@amd.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Nickle Wang <nicklew@nvidia.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> Cc: Isaac Oram <isaac.w.oram@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
>
> Abner Chang (3):
> MdeModulePkg/Include: Add IpmiCommandLib header file
> MdeModulePkg/IpmiCommandLib: Add NULL instance library
> MdeModulePkg: Add IpmiCommandLib
>
> MdeModulePkg/MdeModulePkg.dec | 5 +
> MdeModulePkg/MdeModulePkg.dsc | 3 +
> .../BaseIpmiCommandLibNull.inf | 34 +
> MdeModulePkg/Include/Library/IpmiCommandLib.h | 683
> ++++++++++++++++++
> .../IpmiCommandLibNetFnApp.c | 252 +++++++
> .../IpmiCommandLibNetFnChassis.c | 123 ++++
> .../IpmiCommandLibNetFnStorage.c | 248 +++++++
> .../IpmiCommandLibNetFnTransport.c | 100 +++
> 8 files changed, 1448 insertions(+)
> create mode 100644
> MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibNu
> ll.inf
> create mode 100644 MdeModulePkg/Include/Library/IpmiCommandLib.h
> create mode 100644
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnA
> pp.c
> create mode 100644
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnC
> hassis.c
> create mode 100644
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnSt
> orage.c
> create mode 100644
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnTr
> ansport.c
>
> --
> 2.37.1.windows.1
>
>
>
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance
2023-01-18 5:09 ` 回复: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance gaoliming
@ 2023-01-19 3:59 ` Chang, Abner
0 siblings, 0 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-19 3:59 UTC (permalink / raw)
To: gaoliming, devel@edk2.groups.io
Cc: 'Jian J Wang', 'Nickle Wang',
'Igor Kulchytskyy', 'Isaac Oram',
'Nate DeSimone'
[AMD Official Use Only - General]
Merged.
> -----Original Message-----
> From: gaoliming <gaoliming@byosoft.com.cn>
> Sent: Wednesday, January 18, 2023 1:10 PM
> To: devel@edk2.groups.io; Chang, Abner <Abner.Chang@amd.com>
> Cc: 'Jian J Wang' <jian.j.wang@intel.com>; 'Nickle Wang'
> <nicklew@nvidia.com>; 'Igor Kulchytskyy' <igork@ami.com>; 'Isaac Oram'
> <isaac.w.oram@intel.com>; 'Nate DeSimone'
> <nathaniel.l.desimone@intel.com>
> Subject: 回复: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib
> instance
>
> Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
>
>
> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
>
> > -----邮件原件-----
> > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Chang,
> Abner via
> > groups.io
> > 发送时间: 2023年1月18日 9:43
> > 收件人: devel@edk2.groups.io
> > 抄送: Jian J Wang <jian.j.wang@intel.com>; Liming Gao
> > <gaoliming@byosoft.com.cn>; Nickle Wang <nicklew@nvidia.com>; Igor
> > Kulchytskyy <igork@ami.com>; Isaac Oram <isaac.w.oram@intel.com>;
> Nate
> > DeSimone <nathaniel.l.desimone@intel.com>
> > 主题: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance
> >
> > From: Abner Chang <abner.chang@amd.com>
> >
> > BZ# 4231
> >
> > In V3: Add Igor Kulchytskyy's Reviewed-by In V2: Address the typos.
> >
> > This patch adds a NULL instance of IpmiCommandLib to remove the
> > dependence between edk2 and edk2-platform packages.
> >
> > Signed-off-by: Abner Chang <abner.chang@amd.com>
> > Cc: Jian J Wang <jian.j.wang@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Nickle Wang <nicklew@nvidia.com>
> > Cc: Igor Kulchytskyy <igork@ami.com>
> > Cc: Isaac Oram <isaac.w.oram@intel.com>
> > Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> >
> > Abner Chang (3):
> > MdeModulePkg/Include: Add IpmiCommandLib header file
> > MdeModulePkg/IpmiCommandLib: Add NULL instance library
> > MdeModulePkg: Add IpmiCommandLib
> >
> > MdeModulePkg/MdeModulePkg.dec | 5 +
> > MdeModulePkg/MdeModulePkg.dsc | 3 +
> > .../BaseIpmiCommandLibNull.inf | 34 +
> > MdeModulePkg/Include/Library/IpmiCommandLib.h | 683
> > ++++++++++++++++++
> > .../IpmiCommandLibNetFnApp.c | 252 +++++++
> > .../IpmiCommandLibNetFnChassis.c | 123 ++++
> > .../IpmiCommandLibNetFnStorage.c | 248 +++++++
> > .../IpmiCommandLibNetFnTransport.c | 100 +++
> > 8 files changed, 1448 insertions(+)
> > create mode 100644
> >
> MdeModulePkg/Library/BaseIpmiCommandLibNull/BaseIpmiCommandLibN
> u
> > ll.inf
> > create mode 100644 MdeModulePkg/Include/Library/IpmiCommandLib.h
> > create mode 100644
> >
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFn
> A
> > pp.c
> > create mode 100644
> >
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFn
> C
> > hassis.c
> > create mode 100644
> >
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnS
> t
> > orage.c
> > create mode 100644
> >
> MdeModulePkg/Library/BaseIpmiCommandLibNull/IpmiCommandLibNetFnT
> r
> > ansport.c
> >
> > --
> > 2.37.1.windows.1
> >
> >
> >
> >
> >
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-01-19 3:59 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-18 1:42 [PATCH V3 0/3] Add NULL IpmiCommandLib instance Chang, Abner
2023-01-18 1:42 ` [PATCH V3 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
2023-01-18 1:42 ` [PATCH V3 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library Chang, Abner
2023-01-18 1:42 ` [PATCH V3 3/3] MdeModulePkg: Add IpmiCommandLib Chang, Abner
2023-01-18 5:09 ` 回复: [edk2-devel] [PATCH V3 0/3] Add NULL IpmiCommandLib instance gaoliming
2023-01-19 3:59 ` Chang, Abner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox