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>
---
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..cac8123411f
--- /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) 2022 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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 NetFnChasis
+//
+
+/**
+ This function gets chassis capability.
+
+ @param[out] GetChassisCapabilitiesResponse Gets chassis capability command response.
+
+ @retval EFI_SUCCESS Command is sent successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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 successly.
+ @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
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97772): https://edk2.groups.io/g/devel/message/97772
Mute This Topic: https://groups.io/mt/95915732/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Reviewed-by: Isaac Oram <isaac.w.oram@intel.com> Typos in SetPowerRestireRequest and SetPowerRestireResponse in function comment block and parameters. 35 instances of successly should perhaps be successfully. 344: NetFnChasis should perhaps be NetFnChassis. Regards, Isaac -----Original Message----- From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chang, Abner via groups.io Sent: Tuesday, December 27, 2022 8:59 PM To: devel@edk2.groups.io Cc: Wang, Jian J <jian.j.wang@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Nickle Wang <nicklew@nvidia.com>; Igor Kulchytskyy <igork@ami.com>; Oram, Isaac W <isaac.w.oram@intel.com>; Desimone, Nathaniel L <nathaniel.l.desimone@intel.com> Subject: [edk2-devel] [PATCH 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file 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> --- 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..cac8123411f --- /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) 2022 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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 NetFnChasis +// + +/** + This function gets chassis capability. + + @param[out] GetChassisCapabilitiesResponse Gets chassis capability command response. + + @retval EFI_SUCCESS Command is sent successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 successly. + @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 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#98401): https://edk2.groups.io/g/devel/message/98401 Mute This Topic: https://groups.io/mt/95915732/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
[AMD Official Use Only - General] Thanks for catching these typos in patches. V2 is sent to address them. Abner > -----Original Message----- > From: Oram, Isaac W <isaac.w.oram@intel.com> > Sent: Friday, January 13, 2023 8:11 AM > To: devel@edk2.groups.io; Chang, Abner <Abner.Chang@amd.com> > Cc: Wang, Jian J <jian.j.wang@intel.com>; Gao, Liming > <gaoliming@byosoft.com.cn>; Nickle Wang <nicklew@nvidia.com>; Igor > Kulchytskyy <igork@ami.com>; Desimone, Nathaniel L > <nathaniel.l.desimone@intel.com> > Subject: RE: [edk2-devel] [PATCH 1/3] MdeModulePkg/Include: Add > IpmiCommandLib header file > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > Reviewed-by: Isaac Oram <isaac.w.oram@intel.com> > > Typos in SetPowerRestireRequest and SetPowerRestireResponse in function > comment block and parameters. > 35 instances of successly should perhaps be successfully. > 344: NetFnChasis should perhaps be NetFnChassis. > > Regards, > Isaac > > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chang, > Abner via groups.io > Sent: Tuesday, December 27, 2022 8:59 PM > To: devel@edk2.groups.io > Cc: Wang, Jian J <jian.j.wang@intel.com>; Gao, Liming > <gaoliming@byosoft.com.cn>; Nickle Wang <nicklew@nvidia.com>; Igor > Kulchytskyy <igork@ami.com>; Oram, Isaac W <isaac.w.oram@intel.com>; > Desimone, Nathaniel L <nathaniel.l.desimone@intel.com> > Subject: [edk2-devel] [PATCH 1/3] MdeModulePkg/Include: Add > IpmiCommandLib header file > > 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> > --- > 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..cac8123411f > --- /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) 2022 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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 NetFnChasis > +// > + > +/** > + This function gets chassis capability. > + > + @param[out] GetChassisCapabilitiesResponse Gets chassis capability > command response. > + > + @retval EFI_SUCCESS Command is sent successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 successly. > + @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 > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#98444): https://edk2.groups.io/g/devel/message/98444 Mute This Topic: https://groups.io/mt/95915732/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.