mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
Replace the hardcoded IPMI_KCS_TIMEOUT_5_SEC macro in WaitStatusSet() and WaitStatusClear() with PcdKcsStatusCheckTimeout so platform firmware can tune the KCS timeout without recompiling the library. - ManageabilityPkg.dec: declare PcdKcsStatusCheckTimeout (UINT64, 5000000 us) - KcsCommon.c: use PcdGet64(PcdKcsStatusCheckTimeout); add DEBUG on timeout - ManageabilityTransportKcs.h: remove now-unused IPMI_KCS_TIMEOUT_5_SEC macro - BaseManageabilityTransportKcs.inf, Dxe/DxeManageabilityTransportKcs.inf: add PcdKcsStatusCheckTimeout to [FixedPcd] Co-authored-by: Abner Chang <abner.chang@amd.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
133 lines
7.5 KiB
Text
133 lines
7.5 KiB
Text
## @file
|
|
# Manageabilty Package
|
|
# This package provides the implementation of transport interfaces and
|
|
# protocols of the system manageability industry standard, such as MCTP,
|
|
# PLDM, IPMI, and etc. The design concept of this package is to provide a
|
|
# flexble way to integrate a desired transport interface to the particular
|
|
# manageability protocol. For example, KCS transport interface for either
|
|
# IPMI protocol or MCTP protocol, or both. Refer to the Readme.md under
|
|
# ManageabilityPkg.
|
|
#
|
|
# Copyright (C) 2023-2026 Advanced Micro Devices, Inc. All rights reserved.<BR>
|
|
# Copyright (c) 2024, Ampere Computing LLC. All rights reserved.<BR>
|
|
# Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
##
|
|
|
|
[Defines]
|
|
DEC_SPECIFICATION = 0x0001001d
|
|
PACKAGE_NAME = ManageabilityPkg
|
|
PACKAGE_GUID = 36310119-4FB2-4BA3-959D-74C16B849F9E
|
|
PACKAGE_VERSION = 1.0
|
|
|
|
[Includes]
|
|
Include
|
|
|
|
[LibraryClasses]
|
|
## @libraryclass Manageability Transport Library
|
|
# Manageability Transport Library definitions
|
|
ManageabilityTransportLib|Include/Library/ManageabilityTransportLib.h
|
|
ManageabilityTransportLib|Include/Library/ManageabilityTransportIpmiLib.h
|
|
ManageabilityTransportLib|Include/Library/ManageabilityTransportMctpLib.h
|
|
|
|
## @libraryclass Manageability Transport Helper Library
|
|
# Provide the help functions to use ManageabilityTransportLib
|
|
ManageabilityTransportHelperLib|Include/Library/ManageabilityTransportHelperLib.h
|
|
|
|
## @libraryclass PLDM Protocol Library
|
|
# PLDM Protocol Library Definitions
|
|
PldmProtocolLib|Include/Library/BasePldmProtocolLib.h
|
|
|
|
## @libraryclass Platform BMC Ready Library
|
|
# Provide the help functions to check the BMC state
|
|
PlatformBmcReadyLib|Include/Library/PlatformBmcReadyLib.h
|
|
|
|
[Guids]
|
|
gManageabilityPkgTokenSpaceGuid = { 0xBDEFFF48, 0x1C31, 0x49CD, { 0xA7, 0x6D, 0x92, 0x9E, 0x60, 0xDB, 0xB9, 0xF8 } }
|
|
|
|
# Manageability Transport Interface type
|
|
#
|
|
# Manageability Transport KCS
|
|
gManageabilityTransportKcsGuid = { 0x5A6E64E9, 0xFD47, 0x4086, { 0xAA, 0xB0, 0x7A, 0x5F, 0xD7, 0x6B, 0x02, 0x2E } }
|
|
# Manageability Transport SMBUS I2C
|
|
gManageabilityTransportSmbusI2cGuid = { 0x5B174658, 0x8263, 0x4CB8, { 0xA0, 0x0F, 0xD6, 0x82, 0xE6, 0xBC, 0x74, 0x93 } }
|
|
# Manageability Transport PCI VDM
|
|
gManageabilityTransportPciVdmGuid = { 0x388021A7, 0xFB59, 0x4811, { 0x9D, 0xA7, 0xD5, 0x63, 0x7D, 0x04, 0xA7, 0x2F } }
|
|
# Manageability Transport MCTP
|
|
gManageabilityTransportMctpGuid = { 0x6798448D, 0x1200, 0x4577, { 0x82, 0x50, 0xA9, 0x83, 0xBA, 0x2B, 0x45, 0xD9 } }
|
|
# Manageability Transport SERIAL
|
|
gManageabilityTransportSerialGuid = { 0xEF437878, 0x34DD, 0x4879, { 0x8F, 0xD3, 0xB6, 0x0A, 0x40, 0x3C, 0xD0, 0x63 } }
|
|
|
|
# Manageability Protocol Specification
|
|
#
|
|
# Manageability Protocol IPMI
|
|
gManageabilityProtocolIpmiGuid = { 0x36ACA47C, 0xCC80, 0x473B, { 0xAB, 0xEC, 0xF3, 0x98, 0xFF, 0x87, 0x74, 0x5B } }
|
|
# Manageability Protocol MCTP
|
|
# MCTP is a transport interface but also a protocol that can be transmitted over other transport interfaces.
|
|
gManageabilityProtocolMctpGuid = { 0x76FED8F1, 0x0BE5, 0x4269, { 0xA3, 0x1A, 0x38, 0x0F, 0x54, 0xF1, 0xA1, 0x8A } }
|
|
# Manageability Protocol PLDM
|
|
gManageabilityProtocolPldmGuid = { 0x3958090D, 0x69DD, 0x4868, { 0x9C, 0x41, 0xC9, 0xAC, 0x31, 0xB5, 0x25, 0xC5 } }
|
|
|
|
# Manageability variable Guid
|
|
gManageabilityVariableGuid = { 0xac4cf43f, 0x3f64, 0x416a, { 0x96, 0x1d, 0x03, 0x1b, 0x53, 0x5b, 0x91, 0x5f } }
|
|
|
|
[Protocols]
|
|
gEdkiiPldmProtocolGuid = { 0x60997616, 0xDB70, 0x4B5F, { 0x86, 0xA4, 0x09, 0x58, 0xA3, 0x71, 0x47, 0xB4 } }
|
|
gEdkiiPldmSmbiosTransferProtocolGuid = { 0xFA431C3C, 0x816B, 0x4B32, { 0xA3, 0xE0, 0xAD, 0x9B, 0x7F, 0x64, 0x27, 0x2E } }
|
|
gEdkiiMctpProtocolGuid = { 0xE93465C1, 0x9A31, 0x4C96, { 0x92, 0x56, 0x22, 0x0A, 0xE1, 0x80, 0xB4, 0x1B } }
|
|
## Include/Protocol/IpmiBlobTransfer.h
|
|
gEdkiiIpmiBlobTransferProtocolGuid = { 0x05837c75, 0x1d65, 0x468b, { 0xb1, 0xc2, 0x81, 0xaf, 0x9a, 0x31, 0x5b, 0x2c } }
|
|
|
|
[PcdsFixedAtBuild]
|
|
## This value is the MCTP Interface source and destination endpoint ID for transmiting MCTP message.
|
|
# @Prompt MCTP source endpoint ID
|
|
gManageabilityPkgTokenSpaceGuid.PcdMctpSourceEndpointId|0|UINT8|0x00000001
|
|
# @Prompt MCTP destination endpoint ID
|
|
gManageabilityPkgTokenSpaceGuid.PcdMctpDestinationEndpointId|0|UINT8|0x00000002
|
|
## This is the value of MCTP KCS I/O base address mode
|
|
# @Prompt MCTP KCS I/O base address mode
|
|
gManageabilityPkgTokenSpaceGuid.PcdMctpKcsMemoryMappedIo|0|BOOLEAN|0x00000003
|
|
## This is the value of MCTP KCS I/O base address
|
|
# @Prompt MCTP KCS (Memory mapped) I/O base address
|
|
gManageabilityPkgTokenSpaceGuid.PcdMctpKcsBaseAddress|0xca2|UINT32|0x00000004
|
|
## This is the timeout value for the KCS status check.
|
|
# @Prompt KCS interface status check timeout in microseconds.
|
|
gManageabilityPkgTokenSpaceGuid.PcdKcsStatusCheckTimeout|5000000|UINT64|0x00000005
|
|
|
|
## This value is the PLDM source and destination terminus ID for transmiting PLDM message.
|
|
# @Prompt PLDM source terminus ID
|
|
gManageabilityPkgTokenSpaceGuid.PcdPldmSourceTerminusId|0|UINT8|0x00000040
|
|
# @Prompt PLDM destination terminus ID
|
|
gManageabilityPkgTokenSpaceGuid.PcdPldmDestinationEndpointId|0|UINT8|0x00000041
|
|
|
|
## This is the value of SOL channels supported on platform.
|
|
# @Prompt SOL channel number
|
|
gManageabilityPkgTokenSpaceGuid.PcdMaxSolChannels|3|UINT8|0x00000100
|
|
|
|
[PcdsFeatureFlag]
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiEnable|FALSE|BOOLEAN|0x10000001
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilitySmmIpmiEnable|FALSE|BOOLEAN|0x10000002
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityPeiIpmiEnable|FALSE|BOOLEAN|0x10000003
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxePldmEnable|FALSE|BOOLEAN|0x10000004
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeMctpEnable|FALSE|BOOLEAN|0x10000005
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxePldmSmbiosTransferEnable|FALSE|BOOLEAN|0x10000006
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiFru|FALSE|BOOLEAN|0x10000007
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiOsWdt|FALSE|BOOLEAN|0x10000008
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiSolStatus|FALSE|BOOLEAN|0x10000009
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiBmcElog|FALSE|BOOLEAN|0x1000000A
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiFrb|FALSE|BOOLEAN|0x1000000B
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityPeiIpmiFrb|FALSE|BOOLEAN|0x1000000C
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiBmcAcpi|FALSE|BOOLEAN|0x1000000D
|
|
gManageabilityPkgTokenSpaceGuid.PcdManageabilityDxeIpmiSmbiosTransferEnable|FALSE|BOOLEAN|0x1000000E
|
|
|
|
[PcdsDynamic, PcdsDynamicEx]
|
|
gManageabilityPkgTokenSpaceGuid.PcdFRB2EnabledFlag|TRUE|BOOLEAN|0x20000001
|
|
## This is the timeout value in milliseconds, default set to 360 milliseconds
|
|
# @Prompt IPMI Fault Resilient Booting timeout value in milliseconds.
|
|
gManageabilityPkgTokenSpaceGuid.PcdFRBTimeoutValue|360|UINT16|0x20000002
|
|
## The BlobId of SMBIOS Blob in OpenBMC Phosphor Blob Transfer architecture
|
|
gManageabilityPkgTokenSpaceGuid.PcdBmcSmbiosBlobTransferId|"/smbios"|VOID*|0x20000003
|
|
## When this PCD is set to TRUE, IpmiSmbiosTransferDxe only sends SMBIOS table to
|
|
# BMC when SMBIOS table is changed.
|
|
gManageabilityPkgTokenSpaceGuid.PcdSendSmbiosOnChanged|TRUE|BOOLEAN|0x20000004
|