1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
## @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
[Includes.Common.Private]
PrivateInclude
[LibraryClasses.Common.Private]
## @libraryclass Private manageability Transport Library
# Manageability Transport Library definitions
ManageabilityTransportLib|PrivateInclude/Library/ManageabilityTransportLib.h
ManageabilityTransportLib|PrivateInclude/Library/ManageabilityTransportIpmiLib.h
ManageabilityTransportLib|PrivateInclude/Library/ManageabilityTransportMctpLib.h
[LibraryClasses]
## @libraryclass Manageability Transport Helper Library
# Provide the help functions to use ManageabilityTransportLib
ManageabilityTransportHelperLib|PrivateInclude/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
|