public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH V2 0/3] Add NULL IpmiCommandLib instance
@ 2023-01-13  6:03 Chang, Abner
  2023-01-13  6:03 ` [PATCH V2 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-13  6:03 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 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 V2 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file
  2023-01-13  6:03 [PATCH V2 0/3] Add NULL IpmiCommandLib instance Chang, Abner
@ 2023-01-13  6:03 ` Chang, Abner
  2023-01-13  6:03 ` [PATCH V2 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library Chang, Abner
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-13  6:03 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>
---
 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 V2 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library
  2023-01-13  6:03 [PATCH V2 0/3] Add NULL IpmiCommandLib instance Chang, Abner
  2023-01-13  6:03 ` [PATCH V2 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
@ 2023-01-13  6:03 ` Chang, Abner
  2023-01-13  6:03 ` [PATCH V2 3/3] MdeModulePkg: Add IpmiCommandLib Chang, Abner
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-13  6:03 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>
---
 .../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 V2 3/3] MdeModulePkg: Add IpmiCommandLib
  2023-01-13  6:03 [PATCH V2 0/3] Add NULL IpmiCommandLib instance Chang, Abner
  2023-01-13  6:03 ` [PATCH V2 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
  2023-01-13  6:03 ` [PATCH V2 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library Chang, Abner
@ 2023-01-13  6:03 ` Chang, Abner
  2023-01-13 21:34 ` [edk2-devel] [PATCH V2 0/3] Add NULL IpmiCommandLib instance Isaac Oram
  2023-01-17 16:47 ` Igor Kulchytskyy
  4 siblings, 0 replies; 6+ messages in thread
From: Chang, Abner @ 2023-01-13  6:03 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>
---
 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

* Re: [edk2-devel] [PATCH V2 0/3] Add NULL IpmiCommandLib instance
  2023-01-13  6:03 [PATCH V2 0/3] Add NULL IpmiCommandLib instance Chang, Abner
                   ` (2 preceding siblings ...)
  2023-01-13  6:03 ` [PATCH V2 3/3] MdeModulePkg: Add IpmiCommandLib Chang, Abner
@ 2023-01-13 21:34 ` Isaac Oram
  2023-01-17 16:47 ` Igor Kulchytskyy
  4 siblings, 0 replies; 6+ messages in thread
From: Isaac Oram @ 2023-01-13 21:34 UTC (permalink / raw)
  To: devel@edk2.groups.io, abner.chang@amd.com
  Cc: Wang, Jian J, Gao, Liming, Nickle Wang, Igor Kulchytskyy,
	Desimone, Nathaniel L

Series Reviewed-by: Isaac Oram <isaac.w.oram@intel.com>

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chang, Abner via groups.io
Sent: Thursday, January 12, 2023 10:03 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 V2 0/3] Add NULL IpmiCommandLib instance

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

BZ# 4231

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

* Re: [PATCH V2 0/3] Add NULL IpmiCommandLib instance
  2023-01-13  6:03 [PATCH V2 0/3] Add NULL IpmiCommandLib instance Chang, Abner
                   ` (3 preceding siblings ...)
  2023-01-13 21:34 ` [edk2-devel] [PATCH V2 0/3] Add NULL IpmiCommandLib instance Isaac Oram
@ 2023-01-17 16:47 ` Igor Kulchytskyy
  4 siblings, 0 replies; 6+ messages in thread
From: Igor Kulchytskyy @ 2023-01-17 16:47 UTC (permalink / raw)
  To: abner.chang@amd.com, devel@edk2.groups.io
  Cc: Jian J Wang, Liming Gao, Nickle Wang, Isaac Oram, Nate DeSimone

Series Reviewed-by: Igor Kulchytskyy <igork@ami.com>

-----Original Message-----
From: abner.chang@amd.com <abner.chang@amd.com>
Sent: Friday, January 13, 2023 1:03 AM
To: devel@edk2.groups.io
Cc: 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>
Subject: [EXTERNAL] [PATCH V2 0/3] Add NULL IpmiCommandLib instance


**CAUTION: The e-mail below is from an external source. Please exercise caution before opening attachments, clicking links, or following guidance.**

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

BZ# 4231

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

-The information contained in this message may be confidential and proprietary to American Megatrends (AMI). This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-01-17 16:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-13  6:03 [PATCH V2 0/3] Add NULL IpmiCommandLib instance Chang, Abner
2023-01-13  6:03 ` [PATCH V2 1/3] MdeModulePkg/Include: Add IpmiCommandLib header file Chang, Abner
2023-01-13  6:03 ` [PATCH V2 2/3] MdeModulePkg/IpmiCommandLib: Add NULL instance library Chang, Abner
2023-01-13  6:03 ` [PATCH V2 3/3] MdeModulePkg: Add IpmiCommandLib Chang, Abner
2023-01-13 21:34 ` [edk2-devel] [PATCH V2 0/3] Add NULL IpmiCommandLib instance Isaac Oram
2023-01-17 16:47 ` Igor Kulchytskyy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox