mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
Merge 8eaa80eb53 into fb2ac429de
This commit is contained in:
commit
0b1c7feddc
8 changed files with 3341 additions and 76 deletions
|
|
@ -70,6 +70,7 @@
|
|||
DynamicTablesPkg/Library/Smbios/SmbiosType29Lib/SmbiosType29Lib.inf
|
||||
DynamicTablesPkg/Library/Smbios/SmbiosType37Lib/SmbiosType37Lib.inf
|
||||
DynamicTablesPkg/Library/Smbios/SmbiosType40Lib/SmbiosType40Lib.inf
|
||||
DynamicTablesPkg/Library/Smbios/SmbiosType42Lib/SmbiosType42Lib.inf
|
||||
DynamicTablesPkg/Library/Smbios/SmbiosType44Lib/SmbiosType44Lib.inf
|
||||
|
||||
# AML Fixup (Common)
|
||||
|
|
@ -192,6 +193,7 @@
|
|||
NULL|DynamicTablesPkg/Library/Smbios/SmbiosType29Lib/SmbiosType29Lib.inf
|
||||
NULL|DynamicTablesPkg/Library/Smbios/SmbiosType37Lib/SmbiosType37Lib.inf
|
||||
NULL|DynamicTablesPkg/Library/Smbios/SmbiosType40Lib/SmbiosType40Lib.inf
|
||||
NULL|DynamicTablesPkg/Library/Smbios/SmbiosType42Lib/SmbiosType42Lib.inf
|
||||
NULL|DynamicTablesPkg/Library/Smbios/SmbiosType44Lib/SmbiosType44Lib.inf
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,16 @@
|
|||
///
|
||||
#define SMBIOS_MAX_STRING_SIZE (1024)
|
||||
|
||||
///
|
||||
/// Reduced Maximum storage size, including the terminating NULL, for SMBIOS strings
|
||||
/// represented inline in Configuration Manager objects. This is a
|
||||
/// DynamicTablesPkg implementation limit.
|
||||
///
|
||||
/// The legacy 64-character constraint from SMBIOS 2.6 was required for MIF
|
||||
/// compatibility and does not apply to SMBIOS 2.7 or later tables.
|
||||
///
|
||||
#define SMBIOS_MAX_STRING_SIZE_REDUCED (128)
|
||||
|
||||
// Maximum interleave ways is defined in the CXL spec section 8.2.4.19.7.
|
||||
#define CFMWS_MAX_INTERLEAVE_WAYS (16)
|
||||
|
||||
|
|
@ -55,82 +65,90 @@
|
|||
in the Arch Common Namespace
|
||||
*/
|
||||
typedef enum ArchCommonObjectID {
|
||||
EArchCommonObjReserved, ///< 0 - Reserved
|
||||
EArchCommonObjPowerManagementProfileInfo, ///< 1 - Power Management Profile Info
|
||||
EArchCommonObjSerialPortInfo, ///< 2 - Generic Serial Port Info
|
||||
EArchCommonObjConsolePortInfo, ///< 3 - Serial Console Port Info
|
||||
EArchCommonObjSerialDebugPortInfo, ///< 4 - Serial Debug Port Info
|
||||
EArchCommonObjHypervisorVendorIdentity, ///< 5 - Hypervisor Vendor Id
|
||||
EArchCommonObjFixedFeatureFlags, ///< 6 - Fixed feature flags for FADT
|
||||
EArchCommonObjCmRef, ///< 7 - CM Object Reference
|
||||
EArchCommonObjPciConfigSpaceInfo, ///< 8 - PCI Configuration Space Info
|
||||
EArchCommonObjPciAddressMapInfo, ///< 9 - Pci Address Map Info
|
||||
EArchCommonObjPciInterruptMapInfo, ///< 10 - Pci Interrupt Map Info
|
||||
EArchCommonObjMemoryAffinityInfo, ///< 11 - Memory Affinity Info
|
||||
EArchCommonObjDeviceHandleAcpi, ///< 12 - Device Handle Acpi
|
||||
EArchCommonObjDeviceHandlePci, ///< 13 - Device Handle Pci
|
||||
EArchCommonObjGenericInitiatorAffinityInfo, ///< 14 - Generic Initiator Affinity
|
||||
EArchCommonObjLpiInfo, ///< 15 - Lpi Info
|
||||
EArchCommonObjProcHierarchyInfo, ///< 16 - Processor Hierarchy Info
|
||||
EArchCommonObjCacheInfo, ///< 17 - Cache Info
|
||||
EArchCommonObjCpcInfo, ///< 18 - Continuous Performance Control Info
|
||||
EArchCommonObjPccSubspaceType0Info, ///< 19 - Pcc Subspace Type 0 Info
|
||||
EArchCommonObjPccSubspaceType1Info, ///< 20 - Pcc Subspace Type 1 Info
|
||||
EArchCommonObjPccSubspaceType2Info, ///< 21 - Pcc Subspace Type 2 Info
|
||||
EArchCommonObjPccSubspaceType3Info, ///< 22 - Pcc Subspace Type 3 Info
|
||||
EArchCommonObjPccSubspaceType4Info, ///< 23 - Pcc Subspace Type 4 Info
|
||||
EArchCommonObjPccSubspaceType5Info, ///< 24 - Pcc Subspace Type 5 Info
|
||||
EArchCommonObjPsdInfo, ///< 25 - P-State Dependency (PSD) Info
|
||||
EArchCommonObjTpm2InterfaceInfo, ///< 26 - TPM Interface Info
|
||||
EArchCommonObjSpmiInterfaceInfo, ///< 27 - SPMI Interface Info
|
||||
EArchCommonObjSpmiInterruptDeviceInfo, ///< 28 - SPMI Interrupt and Device Info
|
||||
EArchCommonObjCstInfo, ///< 29 - C-State Info
|
||||
EArchCommonObjCsdInfo, ///< 30 - C-State Dependency (CSD) Info
|
||||
EArchCommonObjPctInfo, ///< 31 - P-State control (PCT) Info
|
||||
EArchCommonObjPssInfo, ///< 32 - P-State status (PSS) Info
|
||||
EArchCommonObjPpcInfo, ///< 33 - P-State control (PPC) Info
|
||||
EArchCommonObjStaInfo, ///< 34 - _STA (Device Status) Info
|
||||
EArchCommonObjMemoryRangeDescriptor, ///< 35 - Memory Range Descriptor
|
||||
EArchCommonObjGenericDbg2DeviceInfo, ///< 36 - Generic DBG2 Device Info
|
||||
EArchCommonObjCxlHostBridgeInfo, ///< 37 - CXL Host Bridge Info
|
||||
EArchCommonObjCxlFixedMemoryWindowInfo, ///< 38 - CXL Fixed Memory Window Info
|
||||
EArchCommonObjProximityDomainInfo, ///< 39 - Proximity Domain Info
|
||||
EArchCommonObjProximityDomainRelationInfo, ///< 40 - Proximity Domain Relation Info
|
||||
EArchCommonObjSystemLocalityInfo, ///< 41 - System Locality Info
|
||||
EArchCommonObjMemoryProximityDomainAttrInfo, ///< 42 - Memory Proximity Domain Attribute
|
||||
EArchCommonObjMemoryLatBwInfo, ///< 43 - Memory Latency Bandwidth Info
|
||||
EArchCommonObjMemoryCacheInfo, ///< 44 - Memory Cache Info
|
||||
EArchCommonObjSpcrInfo, ///< 45 - Serial Terminal and Interrupt Info
|
||||
EArchCommonObjTpm2DeviceInfo, ///< 46 - TPM2 Device Info
|
||||
EArchCommonObjMcfgPciConfigSpaceInfo, ///< 47 - MCFG PCI Configuration Space Info
|
||||
EArchCommonObjPciRootPortInfo, ///< 48 - PCI root port configuration Info
|
||||
EArchCommonObjErrSourcePciRootPortInfo, ///< 49 - PCI Express AER Info for RootPort
|
||||
EArchCommonObjErrSourcePciDeviceInfo, ///< 50 - PCI Express AER Info for Device (Endpoint)
|
||||
EArchCommonObjErrSourcePciBridgeInfo, ///< 51 - PCI Express AER Info for Bridge
|
||||
EArchCommonObjErrSourceGenericHwInfo, ///< 52 - Generic Hardware Error Source Info
|
||||
EArchCommonObjErrSourceGenericHwVer2Info, ///< 53 - Generic Hardware Error Source Info version 2
|
||||
EArchCommonObjEinjInstructionsInfo, ///< 54 - Einj Instruction Info
|
||||
EArchCommonObjPlatformFwInfo, ///< 54 - Platform Firmware Info
|
||||
EArchCommonObjPhysicalMemoryArray, ///< 55 - Physical Memory Array Info
|
||||
EArchCommonObjMemoryDeviceInfo, ///< 56 - Memory Device Info
|
||||
EArchCommonObjMemoryArrayMappedAddress, ///< 57 - Memory Array Mapped Address Info
|
||||
EArchCommonObjCoolingDeviceInfo, ///< 58 - Cooling Device Info
|
||||
EArchCommonObjTemperatureProbeInfo, ///< 59 - Temperature Probe Info
|
||||
EArchCommonObjVoltageProbeInfo, ///< 60 - Voltage Probe Info
|
||||
EArchCommonObjElectricalCurrentProbeInfo, ///< 61 - Electrical Current Probe Info
|
||||
EArchCommonObjSystemResetInfo, ///< 62 - System Reset Info
|
||||
EArchCommonObjMemoryDeviceMappedAddress, ///< 63 - Memory Device Mapped Address Info
|
||||
EArchCommonObjMemoryChannelInfo, ///< 64 - Memory Channel Info
|
||||
EArchCommonObjMemoryChannelDevice, ///< 65 - Memory Channel Device Info
|
||||
EArchCommonObjProcessorSpecificBlockInfo, ///< 66 - Processor specific data Info
|
||||
EArchCommonObjSystemInfo, ///< 67 - System Info
|
||||
EArchCommonObjAdditionalInformation, ///< 68 - Additional Information
|
||||
EArchCommonObjAdditionalInformationEntry, ///< 69 - Additional Information Entry
|
||||
EArchCommonObjAdditionalInformationValue, ///< 70 - Additional Information Value
|
||||
EArchCommonObjSystemEnclosureInfo, ///< 71 - System Enclosure Info
|
||||
EArchCommonObjEnclosureElement, ///< 72 - System Enclosure Contained Element
|
||||
EArchCommonObjBaseboardInfo, ///< 73 - Baseboard Info
|
||||
EArchCommonObjBaseboardContainedObject, ///< 74 - Baseboard Contained Object
|
||||
EArchCommonObjReserved, ///< 0 - Reserved
|
||||
EArchCommonObjPowerManagementProfileInfo, ///< 1 - Power Management Profile Info
|
||||
EArchCommonObjSerialPortInfo, ///< 2 - Generic Serial Port Info
|
||||
EArchCommonObjConsolePortInfo, ///< 3 - Serial Console Port Info
|
||||
EArchCommonObjSerialDebugPortInfo, ///< 4 - Serial Debug Port Info
|
||||
EArchCommonObjHypervisorVendorIdentity, ///< 5 - Hypervisor Vendor Id
|
||||
EArchCommonObjFixedFeatureFlags, ///< 6 - Fixed feature flags for FADT
|
||||
EArchCommonObjCmRef, ///< 7 - CM Object Reference
|
||||
EArchCommonObjPciConfigSpaceInfo, ///< 8 - PCI Configuration Space Info
|
||||
EArchCommonObjPciAddressMapInfo, ///< 9 - Pci Address Map Info
|
||||
EArchCommonObjPciInterruptMapInfo, ///< 10 - Pci Interrupt Map Info
|
||||
EArchCommonObjMemoryAffinityInfo, ///< 11 - Memory Affinity Info
|
||||
EArchCommonObjDeviceHandleAcpi, ///< 12 - Device Handle Acpi
|
||||
EArchCommonObjDeviceHandlePci, ///< 13 - Device Handle Pci
|
||||
EArchCommonObjGenericInitiatorAffinityInfo, ///< 14 - Generic Initiator Affinity
|
||||
EArchCommonObjLpiInfo, ///< 15 - Lpi Info
|
||||
EArchCommonObjProcHierarchyInfo, ///< 16 - Processor Hierarchy Info
|
||||
EArchCommonObjCacheInfo, ///< 17 - Cache Info
|
||||
EArchCommonObjCpcInfo, ///< 18 - Continuous Performance Control Info
|
||||
EArchCommonObjPccSubspaceType0Info, ///< 19 - Pcc Subspace Type 0 Info
|
||||
EArchCommonObjPccSubspaceType1Info, ///< 20 - Pcc Subspace Type 1 Info
|
||||
EArchCommonObjPccSubspaceType2Info, ///< 21 - Pcc Subspace Type 2 Info
|
||||
EArchCommonObjPccSubspaceType3Info, ///< 22 - Pcc Subspace Type 3 Info
|
||||
EArchCommonObjPccSubspaceType4Info, ///< 23 - Pcc Subspace Type 4 Info
|
||||
EArchCommonObjPccSubspaceType5Info, ///< 24 - Pcc Subspace Type 5 Info
|
||||
EArchCommonObjPsdInfo, ///< 25 - P-State Dependency (PSD) Info
|
||||
EArchCommonObjTpm2InterfaceInfo, ///< 26 - TPM Interface Info
|
||||
EArchCommonObjSpmiInterfaceInfo, ///< 27 - SPMI Interface Info
|
||||
EArchCommonObjSpmiInterruptDeviceInfo, ///< 28 - SPMI Interrupt and Device Info
|
||||
EArchCommonObjCstInfo, ///< 29 - C-State Info
|
||||
EArchCommonObjCsdInfo, ///< 30 - C-State Dependency (CSD) Info
|
||||
EArchCommonObjPctInfo, ///< 31 - P-State control (PCT) Info
|
||||
EArchCommonObjPssInfo, ///< 32 - P-State status (PSS) Info
|
||||
EArchCommonObjPpcInfo, ///< 33 - P-State control (PPC) Info
|
||||
EArchCommonObjStaInfo, ///< 34 - _STA (Device Status) Info
|
||||
EArchCommonObjMemoryRangeDescriptor, ///< 35 - Memory Range Descriptor
|
||||
EArchCommonObjGenericDbg2DeviceInfo, ///< 36 - Generic DBG2 Device Info
|
||||
EArchCommonObjCxlHostBridgeInfo, ///< 37 - CXL Host Bridge Info
|
||||
EArchCommonObjCxlFixedMemoryWindowInfo, ///< 38 - CXL Fixed Memory Window Info
|
||||
EArchCommonObjProximityDomainInfo, ///< 39 - Proximity Domain Info
|
||||
EArchCommonObjProximityDomainRelationInfo, ///< 40 - Proximity Domain Relation Info
|
||||
EArchCommonObjSystemLocalityInfo, ///< 41 - System Locality Info
|
||||
EArchCommonObjMemoryProximityDomainAttrInfo, ///< 42 - Memory Proximity Domain Attribute
|
||||
EArchCommonObjMemoryLatBwInfo, ///< 43 - Memory Latency Bandwidth Info
|
||||
EArchCommonObjMemoryCacheInfo, ///< 44 - Memory Cache Info
|
||||
EArchCommonObjSpcrInfo, ///< 45 - Serial Terminal and Interrupt Info
|
||||
EArchCommonObjTpm2DeviceInfo, ///< 46 - TPM2 Device Info
|
||||
EArchCommonObjMcfgPciConfigSpaceInfo, ///< 47 - MCFG PCI Configuration Space Info
|
||||
EArchCommonObjPciRootPortInfo, ///< 48 - PCI root port configuration Info
|
||||
EArchCommonObjErrSourcePciRootPortInfo, ///< 49 - PCI Express AER Info for RootPort
|
||||
EArchCommonObjErrSourcePciDeviceInfo, ///< 50 - PCI Express AER Info for Device (Endpoint)
|
||||
EArchCommonObjErrSourcePciBridgeInfo, ///< 51 - PCI Express AER Info for Bridge
|
||||
EArchCommonObjErrSourceGenericHwInfo, ///< 52 - Generic Hardware Error Source Info
|
||||
EArchCommonObjErrSourceGenericHwVer2Info, ///< 53 - Generic Hardware Error Source Info version 2
|
||||
EArchCommonObjEinjInstructionsInfo, ///< 54 - Einj Instruction Info
|
||||
EArchCommonObjPlatformFwInfo, ///< 54 - Platform Firmware Info
|
||||
EArchCommonObjPhysicalMemoryArray, ///< 55 - Physical Memory Array Info
|
||||
EArchCommonObjMemoryDeviceInfo, ///< 56 - Memory Device Info
|
||||
EArchCommonObjMemoryArrayMappedAddress, ///< 57 - Memory Array Mapped Address Info
|
||||
EArchCommonObjCoolingDeviceInfo, ///< 58 - Cooling Device Info
|
||||
EArchCommonObjTemperatureProbeInfo, ///< 59 - Temperature Probe Info
|
||||
EArchCommonObjVoltageProbeInfo, ///< 60 - Voltage Probe Info
|
||||
EArchCommonObjElectricalCurrentProbeInfo, ///< 61 - Electrical Current Probe Info
|
||||
EArchCommonObjSystemResetInfo, ///< 62 - System Reset Info
|
||||
EArchCommonObjMemoryDeviceMappedAddress, ///< 63 - Memory Device Mapped Address Info
|
||||
EArchCommonObjMemoryChannelInfo, ///< 64 - Memory Channel Info
|
||||
EArchCommonObjMemoryChannelDevice, ///< 65 - Memory Channel Device Info
|
||||
EArchCommonObjProcessorSpecificBlockInfo, ///< 66 - Processor specific data Info
|
||||
EArchCommonObjSystemInfo, ///< 67 - System Info
|
||||
EArchCommonObjAdditionalInformation, ///< 68 - Additional Information
|
||||
EArchCommonObjAdditionalInformationEntry, ///< 69 - Additional Information Entry
|
||||
EArchCommonObjAdditionalInformationValue, ///< 70 - Additional Information Value
|
||||
EArchCommonObjSystemEnclosureInfo, ///< 71 - System Enclosure Info
|
||||
EArchCommonObjEnclosureElement, ///< 72 - System Enclosure Contained Element
|
||||
EArchCommonObjBaseboardInfo, ///< 73 - Baseboard Info
|
||||
EArchCommonObjBaseboardContainedObject, ///< 74 - Baseboard Contained Object
|
||||
EArchCommonObjMchiInfo, ///< 75 - Management Controller Host Interface Info.
|
||||
EArchCommonObjMchiMctpDataInfo, ///< 76 - MCHI MCTP specific data Info.
|
||||
EArchCommonObjMchiNetworkDataInfo, ///< 77 - MCHI Network specific data Info.
|
||||
EArchCommonObjMchiProtocolInfo, ///< 78 - Management Controller Host Interface Protocol Info.
|
||||
EArchCommonObjMchiProtocolMctpDataInfo, ///< 79 - MCHI MCTP Protocol Info.
|
||||
EArchCommonObjMchiProtocolRedfishOverIpDataInfo, ///< 80 - Redfish Over Ip Protocol Info.
|
||||
EArchCommonObjMchiNetworkDeviceDescUsbInfo, ///< 81 - MCHI USB Network Device descriptor info
|
||||
EArchCommonObjMchiNetworkDeviceDescPciInfo, ///< 82 - MCHI PCI/PCIe Network Device descriptor info
|
||||
EArchCommonObjMax
|
||||
} EARCH_COMMON_OBJECT_ID;
|
||||
|
||||
|
|
@ -1952,4 +1970,192 @@ typedef struct CmArchCommonBaseboardInfo {
|
|||
UINT8 BoardType;
|
||||
} CM_ARCH_COMMON_BASEBOARD_INFO;
|
||||
|
||||
/** A structure that describes Management Controller Host Interface Info.
|
||||
|
||||
ID: EArchCommonObjMchiInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiInfo {
|
||||
/// A unique token used to identify this object.
|
||||
CM_OBJECT_TOKEN Token;
|
||||
|
||||
/// Interface Type.
|
||||
MC_HOST_INTERFACE_TYPE InterfaceType;
|
||||
|
||||
/// Interface Specific Data Token.
|
||||
CM_OBJECT_TOKEN InterfaceDataToken;
|
||||
|
||||
/// Protocol Token Array for CM_ARCH_COMMON_MCHI_PROTOCOL_INFO
|
||||
CM_ARCH_COMMON_OBJ_REF ProtocolTokenArray;
|
||||
} CM_ARCH_COMMON_MCHI_INFO;
|
||||
|
||||
/** A structure that describes MCHI MCTP specific data.
|
||||
|
||||
ID: EArchCommonObjMchiMctpDataInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiMctpDataInfo {
|
||||
/// A pointer to the MMBI capability pointer. (only for MCTP-MMBI).
|
||||
UINT64 MmbiCapDesPointer;
|
||||
} CM_ARCH_COMMON_MCHI_MCTP_DATA_INFO;
|
||||
|
||||
/** A structure that describes MCHI Network specific data.
|
||||
|
||||
ID: EArchCommonObjMchiNetworkDataInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiNetworkDataInfo {
|
||||
/// Device Type.
|
||||
UINT8 DeviceType;
|
||||
|
||||
/// Device data descriptor Data Token.
|
||||
CM_OBJECT_TOKEN DeviceDataToken;
|
||||
} CM_ARCH_COMMON_MCHI_NETWORK_DATA_INFO;
|
||||
|
||||
/** A structure that describes Management Controller Host Interface
|
||||
Protocol Info.
|
||||
|
||||
ID: EArchCommonObjMchiProtocolInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiProtocolInfo {
|
||||
/// Protocol Type.
|
||||
MC_HOST_INTERFACE_PROTOCOL_TYPE ProtocolType;
|
||||
|
||||
/// Interface Specific Data Token.
|
||||
CM_OBJECT_TOKEN ProtocolDataToken;
|
||||
} CM_ARCH_COMMON_MCHI_PROTOCOL_INFO;
|
||||
|
||||
/** A structure that describes MCTP Ip protocol info.
|
||||
|
||||
ID: EArchCommonObjMchiProtocolMctpDataInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiProtocolMctpDataInfo {
|
||||
/// Version (Major[15:8], Minor[7:0]).
|
||||
UINT16 Version;
|
||||
|
||||
/// Link-layer type.
|
||||
MC_HOST_INTERFACE_TYPE LinkLayerType;
|
||||
|
||||
/// Instance Number.
|
||||
UINT32 Instance;
|
||||
|
||||
/// Characteristics
|
||||
UINT32 Characteristics;
|
||||
} CM_ARCH_COMMON_MCHI_PROTOCOL_MCTP_DATA_INFO;
|
||||
|
||||
/** A structure that describes Redfish Over Ip protocol info.
|
||||
|
||||
ID: EArchCommonObjMchiProtocolRedfishOverIpDataInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiProtocolRedfishOverIpDataInfo {
|
||||
/// Service UUID.
|
||||
EFI_GUID ServiceUuid;
|
||||
|
||||
/// Host Ip assignment type.
|
||||
UINT8 HostIpAssignType;
|
||||
|
||||
/// Host Ip address format.
|
||||
UINT8 HostIpAddressFormat;
|
||||
|
||||
/// Host Ip address.
|
||||
UINT8 HostIpAddress[16];
|
||||
|
||||
/// Host Ip mask.
|
||||
UINT8 HostIpMask[16];
|
||||
|
||||
/// Service Ip discovery type.
|
||||
UINT8 ServiceIpDiscoveryType;
|
||||
|
||||
/// Service Ip address format.
|
||||
UINT8 ServiceIpAddressFormat;
|
||||
|
||||
/// Service Ip address.
|
||||
UINT8 ServiceIpAddress[16];
|
||||
|
||||
/// Service Ip Mask.
|
||||
UINT8 ServiceIpMask[16];
|
||||
|
||||
/// Service Ip Port.
|
||||
UINT16 ServiceIpPort;
|
||||
|
||||
/// Service Vlan Id.
|
||||
UINT32 ServiceVlanId;
|
||||
|
||||
/// Hostname
|
||||
CHAR8 Hostname[MAX_UINT8 - 0x5B];
|
||||
} CM_ARCH_COMMON_MCHI_PROTOCOL_REDFISH_OVER_IP_DATA_INFO;
|
||||
|
||||
/** A structure that describes Redfish USB Device descriptor Data.
|
||||
|
||||
ID: EArchCommonObjMchiNetworkDeviceDescUsbInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiNetworkDeviceDescUsbInfo {
|
||||
/// Version (1 or 2).
|
||||
UINT16 Version;
|
||||
|
||||
/// Vendor Id.
|
||||
UINT16 VendorId;
|
||||
|
||||
/// Product Id.
|
||||
UINT16 ProductId;
|
||||
|
||||
/// Serial Number String.
|
||||
CHAR8 SerialNumberStr[SMBIOS_MAX_STRING_SIZE_REDUCED];
|
||||
|
||||
/// MAC address (v2 only).
|
||||
UINT8 MacAddress[6];
|
||||
|
||||
/// Device Characteristics (v2 only).
|
||||
UINT16 Characteristic;
|
||||
|
||||
///
|
||||
/// IPMI token associated with Type 38 record (v2 only).
|
||||
/// Set to CM_NULL_TOKEN if unused.
|
||||
///
|
||||
CM_OBJECT_TOKEN IpmiToken;
|
||||
} CM_ARCH_COMMON_MCHI_NETWORK_DEVICE_DESC_USB_INFO;
|
||||
|
||||
/** A structure that describes Redfish PCI/PCIe Device descriptor Data.
|
||||
|
||||
ID: EArchCommonObjMchiNetworkDeviceDescPciInfo
|
||||
**/
|
||||
typedef struct CmArchCommonMchiNetworkDeviceDescPciInfo {
|
||||
/// Version (1 or 2).
|
||||
UINT16 Version;
|
||||
|
||||
/// Vendor Id.
|
||||
UINT16 VendorId;
|
||||
|
||||
/// Device Id.
|
||||
UINT16 DeviceId;
|
||||
|
||||
/// Subsystem Vendor Id.
|
||||
UINT16 SubSystemVendorId;
|
||||
|
||||
/// Subsystem Id.
|
||||
UINT16 SubSystemId;
|
||||
|
||||
/// MAC address (v2 only).
|
||||
UINT8 MacAddress[6];
|
||||
|
||||
/// Segment group number (v2 only).
|
||||
UINT16 Segment;
|
||||
|
||||
/// Bus (v2 only)
|
||||
UINT8 Bus;
|
||||
|
||||
///
|
||||
/// Function (device) number (v2 only):
|
||||
/// Bits 7:3 - Device Number
|
||||
/// Bits 2:0 - Function Number
|
||||
///
|
||||
UINT8 Function;
|
||||
|
||||
/// Device Characteristics (v2 only).
|
||||
UINT16 Characteristic;
|
||||
|
||||
///
|
||||
/// IPMI token associated with Type 38 record (v2 only).
|
||||
/// Set to CM_NULL_TOKEN if unused.
|
||||
///
|
||||
CM_OBJECT_TOKEN IpmiToken;
|
||||
} CM_ARCH_COMMON_MCHI_NETWORK_DEVICE_DESC_PCI_INFO;
|
||||
|
||||
#pragma pack()
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <IndustryStandard/SmBios.h>
|
||||
#include <ConfigurationManagerObject.h>
|
||||
#include "ArchCommonNameSpaceObjects.h"
|
||||
#include "ConfigurationManagerObjectParser.h"
|
||||
|
|
@ -1421,6 +1422,89 @@ STATIC CONST CM_OBJ_PARSER CmArchCommonBaseboardInfoParser[] = {
|
|||
{ "BoardType", sizeof (UINT8), "0x%x", NULL },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiInfoParser[] = {
|
||||
{ "Token", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
|
||||
{ "InterfaceType", sizeof (MC_HOST_INTERFACE_TYPE), "0x%x", NULL },
|
||||
{ "InterfaceDataToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
|
||||
{ "ProtocolTokenArray", sizeof (CM_ARCH_COMMON_OBJ_REF), "0x%p", NULL },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiMctpDataInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiMctpDataInfoParser[] = {
|
||||
{ "MmbiCapDesPointer", sizeof (UINT64), "0x%lx", NULL },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiNetworkDataInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiNetworkDataInfoParser[] = {
|
||||
{ "DeviceType", sizeof (UINT8), "0x%x", NULL },
|
||||
{ "DeviceDataToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiProtocolInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiProtocolInfoParser[] = {
|
||||
{ "ProtocolType", sizeof (MC_HOST_INTERFACE_TYPE), "0x%x", NULL },
|
||||
{ "ProtocolDataToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiProtocolMctpDataInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiProtocolMctpDataInfoParser[] = {
|
||||
{ "Version", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "LinkLayerType", sizeof (MC_HOST_INTERFACE_TYPE), "0x%x", NULL },
|
||||
{ "Instance", sizeof (UINT32), "0x%x", NULL },
|
||||
{ "Characteristics", sizeof (UINT32), "0x%x", NULL },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiProtocolRedfishOverIpDataInfo
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiProtocolRedfishOverIpDataInfoParser[] = {
|
||||
{ "ServiceUuid", sizeof (EFI_GUID), "0x%g", NULL },
|
||||
{ "HostIpAssignType", sizeof (UINT8), "0x%x", NULL },
|
||||
{ "HostIpAddressFormat", sizeof (UINT8), "0x%x", NULL },
|
||||
{ "HostIpAddress", sizeof (UINT8) * 16, NULL, HexDump },
|
||||
{ "HostIpMask", sizeof (UINT8) * 16, NULL, HexDump },
|
||||
{ "ServiceIpDiscoveryType", sizeof (UINT8), "0x%x", NULL },
|
||||
{ "ServiceIpAddressFormat", sizeof (UINT8), "0x%x", NULL },
|
||||
{ "ServiceIpAddress", sizeof (UINT8) * 16, NULL, HexDump },
|
||||
{ "ServiceIpMask", sizeof (UINT8) * 16, NULL, HexDump },
|
||||
{ "ServiceIpPort", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "ServiceVlanId", sizeof (UINT32), "0x%x", NULL },
|
||||
{ "Hostname", MAX_UINT8 - 0x5B, NULL, PrintString },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiNetworkDeviceDescUsbInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiNetworkDeviceDescUsbInfoParser[] = {
|
||||
{ "Version", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "VendorId", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "ProductId", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "SerialNumberStr", SMBIOS_MAX_STRING_SIZE_REDUCED, NULL, PrintString },
|
||||
{ "MacAddress", sizeof (UINT8) * 6, NULL, HexDump },
|
||||
{ "Characteristic", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "IpmiToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
|
||||
};
|
||||
|
||||
/** A parser for EArchCommonObjMchiNetworkDeviceDescPciInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArchCommonMchiNetworkDeviceDescPciInfoParser[] = {
|
||||
{ "Version", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "VendorId", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "DeviceId", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "SubSystemVendorId", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "SubSystemId", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "MacAddress", sizeof (UINT8) * 6, NULL, HexDump },
|
||||
{ "Segment", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "Bus", sizeof (UINT8), "0x%x", NULL },
|
||||
{ "Function", sizeof (UINT8), "0x%x", NULL },
|
||||
{ "Characteristic", sizeof (UINT16), "0x%x", NULL },
|
||||
{ "IpmiToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
|
||||
};
|
||||
|
||||
/** A parser for Arch Common namespace objects.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceObjectParser[] = {
|
||||
|
|
@ -1500,6 +1584,14 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceObjectParser[] = {
|
|||
CM_PARSER_ADD_OBJECT (EArchCommonObjEnclosureElement, CmArchCommonEnclosureElementParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjBaseboardInfo, CmArchCommonBaseboardInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjBaseboardContainedObject, CmArchCommonBaseboardContainedObjectParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiInfo, CmArchCommonMchiInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiMctpDataInfo, CmArchCommonMchiMctpDataInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiNetworkDataInfo, CmArchCommonMchiNetworkDataInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiProtocolInfo, CmArchCommonMchiProtocolInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiProtocolMctpDataInfo, CmArchCommonMchiProtocolMctpDataInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiProtocolRedfishOverIpDataInfo, CmArchCommonMchiProtocolRedfishOverIpDataInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiNetworkDeviceDescUsbInfo, CmArchCommonMchiNetworkDeviceDescUsbInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArchCommonObjMchiNetworkDeviceDescPciInfo, CmArchCommonMchiNetworkDeviceDescPciInfoParser),
|
||||
CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
|
||||
};
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,285 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2026, Arm Limited. All rights reserved.
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
@par Glossary:
|
||||
- Cm or CM - Configuration Manager
|
||||
- Obj or OBJ - Object
|
||||
- Std or STD - Standard
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <IndustryStandard/McNetworkHostInterface.h>
|
||||
#include <IndustryStandard/MctpHostInterface.h>
|
||||
|
||||
typedef struct MchiProtocolSpecificDataOps MCHI_PROTOCOL_SPECIFIC_DATA_OPS;
|
||||
typedef struct MchiNetworkDeviceDescOps MCHI_NETWORK_DEVICE_DESC_OPS;
|
||||
typedef struct MchiDataOps MCHI_DATA_OPS;
|
||||
|
||||
typedef enum MchiDataOpsIdx {
|
||||
/// MCHI data operation for MCTP (0x00-0x3F)
|
||||
MchiMctpDataOpsIdx,
|
||||
/// MCHI data operation for Newtwork (0x40)
|
||||
MchiNetworkDataOpsIdx,
|
||||
/// MCHI data operation for OEM (0xF0)
|
||||
MchiOemDataOpsIdx,
|
||||
} MCHI_DATA_OPS_IDX;
|
||||
|
||||
typedef struct MchiProtocolDataInfo {
|
||||
/// List Entry.
|
||||
LIST_ENTRY Entry;
|
||||
|
||||
/// Unique Token for Protocol information.
|
||||
CM_OBJECT_TOKEN Token;
|
||||
|
||||
/// Relevant CM object.
|
||||
VOID *CmObject;
|
||||
|
||||
/// Protocol Type.
|
||||
MC_HOST_INTERFACE_PROTOCOL_TYPE ProtocolType;
|
||||
|
||||
/// Protocol Data Size.
|
||||
UINTN DataSize;
|
||||
} MCHI_PROTOCOL_DATA_INFO;
|
||||
|
||||
/** Get MCHI_PROTOCOL_DATA_INFO associated with Token.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
||||
Protocol Interface.
|
||||
@param [in] Token Protocol DataToken.
|
||||
@param [in] ProtocolType Protocol Type.
|
||||
@param [out] ProtocolInfo Protocol Info.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval Others Failed to get MCHI_PROTOCOL_DATA_INFO
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_MCHI_PROTOCOL_DATA_INFO)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN CM_OBJECT_TOKEN Token,
|
||||
IN MC_HOST_INTERFACE_PROTOCOL_TYPE ProtocolType,
|
||||
OUT MCHI_PROTOCOL_DATA_INFO **ProtocolInfo
|
||||
);
|
||||
|
||||
/** Get size of MCHI protocol specific data.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
||||
Protocol Interface.
|
||||
@param [in] ProtocolInfo ProtocolInfo.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_SIZE_OF_MCHI_PROTOCOL_SPECIFIC_DATA)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN MCHI_PROTOCOL_DATA_INFO *ProtocolInfo
|
||||
);
|
||||
|
||||
/** Add MCHI protocol specific data into buffer.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
||||
Protocol Interface.
|
||||
@param [in] ProtocolInfo ProtocolInfo.
|
||||
@param [in] StrTable String Table.
|
||||
@param [out] Buffer Buffer.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *ADD_MCHI_PROTOCOL_SPECIFIC_DATA)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN CONST MCHI_PROTOCOL_DATA_INFO *ProtocolInfo,
|
||||
IN STRING_TABLE *CONST StrTable,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/** Get MCHI Network Device descriptor CmObject associated with Token.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
||||
Protocol Interface.
|
||||
@param [in] Token Device Descriptor Token.
|
||||
@param [in] DeviceType Device Type.
|
||||
@param [out] CmObject CM object associated device descriptor.
|
||||
@param [out] Count Number of CM object.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval Others Failed to get CM object
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_MCHI_NETWORK_DEVICE_DESC_CM_OBJ)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN CM_OBJECT_TOKEN Token,
|
||||
IN MCHI_NETWORK_DEVICE_TYPE DeviceType,
|
||||
OUT VOID **CmObject,
|
||||
OUT UINT32 *Count
|
||||
);
|
||||
|
||||
/** Get size of Device descriptor data.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
||||
Protocol Interface.
|
||||
@param [in] CmObject CM object.
|
||||
@param [out] Size Size of Device descriptor data.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_SIZE_OF_MCHI_NETWORK_DEVICE_DESC_DATA)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN CONST VOID *CmObject,
|
||||
OUT UINTN *Size
|
||||
);
|
||||
|
||||
/** Add MCHI Network Device specific data into buffer.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
||||
Protocol Interface.
|
||||
@param [in] CmObject CM object.
|
||||
@param [in] StrTable String Table.
|
||||
@param [out] Buffer Buffer.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *ADD_MCHI_NETWORK_DEVICE_DESC_DATA)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN CONST VOID *CmObject,
|
||||
IN STRING_TABLE *CONST StrTable,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/** Get MCHI Data CM objects.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager.
|
||||
Protocol Interface.
|
||||
@param [in] Token MCHI Data Token.
|
||||
@param [in] InterfaceType Interface Type.
|
||||
@param [out] CmObject MCHI Data CM object.
|
||||
@param [out] Count Number of MCHI Data CM object.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval Others Failed to initialise
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_MCHI_DATA_CM_OBJ)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN CM_OBJECT_TOKEN Token,
|
||||
IN MC_HOST_INTERFACE_TYPE InterfaceType,
|
||||
OUT VOID **CmObject,
|
||||
OUT UINT32 *Count
|
||||
);
|
||||
|
||||
/** Get size of MCHI Data.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager.
|
||||
Protocol Interface.
|
||||
@param [in] InterfaceType Interface Type.
|
||||
@param [in] CmObject MCHI Data CM object.
|
||||
@param [out] Size Size of MCHI Data.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_SIZE_OF_MCHI_DATA)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN MC_HOST_INTERFACE_TYPE InterfaceType,
|
||||
IN CONST VOID *CmObject,
|
||||
OUT UINTN *Size
|
||||
);
|
||||
|
||||
/** Add MCHI Data.
|
||||
|
||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
||||
Protocol Interface.
|
||||
@param [in] InterfaceType Interface Type.
|
||||
@param [in] CmObject CM object of Processor Specific Data.
|
||||
@param [in] StrTable String Table.
|
||||
@param [out] Buffer Buffer.
|
||||
|
||||
@retval EFI_SUCCESS
|
||||
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *ADD_MCHI_DATA)(
|
||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
||||
IN MC_HOST_INTERFACE_TYPE InterfaceType,
|
||||
IN CONST VOID *CmObject,
|
||||
IN STRING_TABLE *CONST StrTable,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/** A structure that describes operation for MCHI protocol specific
|
||||
data operation.
|
||||
**/
|
||||
typedef struct MchiProtocolSpecificDataOps {
|
||||
/// MCHI protocol Type.
|
||||
MC_HOST_INTERFACE_PROTOCOL_TYPE ProtocolType;
|
||||
|
||||
/// Get MCHI Protocol info.
|
||||
GET_MCHI_PROTOCOL_DATA_INFO GetMchiProtocolDataInfo;
|
||||
|
||||
/// Get size of MCHI Protocol specific data
|
||||
GET_SIZE_OF_MCHI_PROTOCOL_SPECIFIC_DATA GetSizeofMchiProtocolSpecificData;
|
||||
|
||||
/// Add Error source to HEST
|
||||
ADD_MCHI_PROTOCOL_SPECIFIC_DATA AddMchiProtocolSpecificData;
|
||||
} MCHI_PROTOCOL_SPECIFIC_DATA_OPS;
|
||||
|
||||
/** A structure that describes operation for MCHI Network device descriptor
|
||||
operation.
|
||||
**/
|
||||
typedef struct MchiNetworkDeviceDescOps {
|
||||
/// MCHI Network Device Type.
|
||||
MCHI_NETWORK_DEVICE_TYPE DeviceType;
|
||||
|
||||
/// Get MCHI Network
|
||||
GET_MCHI_NETWORK_DEVICE_DESC_CM_OBJ GetMchiNetworkDeviceDescCmObj;
|
||||
|
||||
/// Get size of MCHI Network device descriptor data
|
||||
GET_SIZE_OF_MCHI_NETWORK_DEVICE_DESC_DATA GetSizeofMchiNetworkDeviceDescData;
|
||||
|
||||
/// Add Error source to HEST
|
||||
ADD_MCHI_NETWORK_DEVICE_DESC_DATA AddMchiNetworkDeviceDescData;
|
||||
|
||||
/// Device Descriptor CmObject
|
||||
VOID *CmObject;
|
||||
|
||||
/// Size of MCHI Network device descriptor.
|
||||
UINTN DataSize;
|
||||
} MCHI_NETWORK_DEVICE_DESC_OPS;
|
||||
|
||||
/** A structure that describes MCHI data operation..
|
||||
*/
|
||||
typedef struct MchiDataOps {
|
||||
/// MCHI data ops index.
|
||||
MCHI_DATA_OPS_IDX MchiDataOpsIdx;
|
||||
|
||||
/// Get CM objects for MCHI Data.
|
||||
GET_MCHI_DATA_CM_OBJ GetMchiDataCmObj;
|
||||
|
||||
/// Get size of MCHI Data.
|
||||
GET_SIZE_OF_MCHI_DATA GetSizeofMchiData;
|
||||
|
||||
/// Add Error source to HEST
|
||||
ADD_MCHI_DATA AddMchiData;
|
||||
|
||||
/// MCHI Data CM object.
|
||||
VOID *CmObject;
|
||||
} MCHI_DATA_OPS;
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
## @file
|
||||
# SMBIOS Type44 Table Generator
|
||||
#
|
||||
# Copyright (c) 2026, Arm Limited. All rights reserved.<BR>
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x0001001B
|
||||
BASE_NAME = SmbiosType42Lib
|
||||
FILE_GUID = 579b59b0-7be4-11f1-b32c-238ebfd9c619
|
||||
VERSION_STRING = 1.0
|
||||
MODULE_TYPE = DXE_DRIVER
|
||||
LIBRARY_CLASS = NULL|DXE_DRIVER
|
||||
CONSTRUCTOR = SmbiosType42LibConstructor
|
||||
DESTRUCTOR = SmbiosType42LibDestructor
|
||||
|
||||
[Sources]
|
||||
SmbiosType42Generator.c
|
||||
SmbiosType42Generator.h
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||
DynamicTablesPkg/DynamicTablesPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
DebugLib
|
||||
SmbiosStringTableLib
|
||||
242
MdePkg/Include/IndustryStandard/McNetworkHostInterface.h
Normal file
242
MdePkg/Include/IndustryStandard/McNetworkHostInterface.h
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2026, Arm Limited. All rights reserved.
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
@par Reference:
|
||||
- DSP0270 version 1.3.1 (https://www.dmtf.org/dsp/DSP0270)
|
||||
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MCHI_NETWORK_DEVICE_CHARACTERISTIC_CREDENTIAL_VIA_IPMI_SUPPORT (BIT0)
|
||||
#define MCHI_NETWORK_DEVICE_CHARACTERISTIC_RESERVED_BITS (~(BIT0))
|
||||
|
||||
/** Network Device type value.
|
||||
|
||||
See DSP0270 7.3.1 Table 3: Device type values.
|
||||
*/
|
||||
typedef enum MchiNetworkDeviceType {
|
||||
MchiNetworkDeviceTypeReserved00 = 0x00,
|
||||
MchiNetworkDeviceTypeReserved01 = 0x01,
|
||||
MchiNetworkDeviceTypeUsb = 0x02,
|
||||
MchiNetworkDeviceTypePci = 0x03,
|
||||
MchiNetworkDeviceTypeUsbv2 = 0x04,
|
||||
MchiNetworkDeviceTypePciv2 = 0x05,
|
||||
MchiNetworkDeviceTypeOemStart = 0x80,
|
||||
MchiNetworkDeviceTypeOemEnd = 0xff,
|
||||
MchiNetworkDeviceTypeMax,
|
||||
} MCHI_NETWORK_DEVICE_TYPE;
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/** Interface-specific data for interface type 40h (Network)
|
||||
|
||||
See DSP0270 7.3 Table 2: Interface-specific data for interface type 40h.
|
||||
*/
|
||||
typedef struct MchiNetworkSpecificData {
|
||||
/// Device Type (REDFISH_INTERFACE_DEVICE_TYPE)
|
||||
UINT8 DeviceType;
|
||||
|
||||
/// Followed by Device Data. See the REDFISH_HOST_INTERFACE_*_DATA.
|
||||
} MCHI_NETWORK_SPECIFIC_DATA;
|
||||
|
||||
/** Interface-specific USB data for interface type 40h (Network)
|
||||
|
||||
See DSP0270 7.3.2 Table 4: Device descriptor data for device type 02h,
|
||||
USB network interface.
|
||||
*/
|
||||
typedef struct MchiNetworkDeviceDescUsbData {
|
||||
/// Vendor Id.
|
||||
UINT16 VendorId;
|
||||
|
||||
/// Product Id.
|
||||
UINT16 ProductId;
|
||||
|
||||
/// Serial number descriptor Length. minimum is 0x02.
|
||||
UINT8 SerialNumberDescLength;
|
||||
|
||||
/// Serial number descriptor Type. always 0x03 (unicode)
|
||||
UINT8 SerialNumberDescType;
|
||||
|
||||
/// followed by SerialNumber Unicode string without NULL terminator.
|
||||
/// UINT16 SerialNumber[]
|
||||
} MCHI_NETWORK_DEVICE_DESC_USB_DATA;
|
||||
|
||||
/** Interface-specific PCI data for interface type 40h (Network)
|
||||
|
||||
See DSP0270 7.3.3 Table 5: Device descriptor data for device type 03h,
|
||||
PCI/PCIe network interface.
|
||||
|
||||
*/
|
||||
typedef struct MchiNetworkDeviceDescPciData {
|
||||
/// Vendor Id.
|
||||
UINT16 VendorId;
|
||||
|
||||
/// Device Id.
|
||||
UINT16 DeviceId;
|
||||
|
||||
/// Subsystem Vendor Id.
|
||||
UINT16 SubSystemVendorId;
|
||||
|
||||
/// Subsystem Id.
|
||||
UINT16 SubSystemId;
|
||||
} MCHI_NETWORK_DEVICE_DESC_PCI_DATA;
|
||||
|
||||
/** Interface-specific USB v2 data for interface type 40h (Network)
|
||||
|
||||
See DSP0270 7.3.4 Table 6: Device descriptor data for device type 04h,
|
||||
USB network interface v2.
|
||||
*/
|
||||
typedef struct MchiNetworkDeviceDescUsbv2Data {
|
||||
/// Length of this structure.
|
||||
UINT8 Length;
|
||||
|
||||
/// Vendor Id.
|
||||
UINT16 VendorId;
|
||||
|
||||
/// Product Id.
|
||||
UINT16 ProductId;
|
||||
|
||||
/// Serial number reference in string table.
|
||||
UINT8 SerialNumberRef;
|
||||
|
||||
/// Mac address of the USB.
|
||||
UINT8 MacAddress[6];
|
||||
|
||||
/// Device Characteristics (version 2 only).
|
||||
UINT16 Characteristic;
|
||||
|
||||
/// Credential bootstrapping with IPMI interface (Type 38) otherwise 0xFFFF.
|
||||
UINT16 CredentialBootStrappingHandle;
|
||||
} MCHI_NETWORK_DEVICE_DESC_USB_V2_DATA;
|
||||
|
||||
/** Interface-specific PCI/PCIe v2 data for interface type 40h (Network)
|
||||
|
||||
See DSP0270 7.3.5 Table 7: Device descriptor data for device type 04h,
|
||||
PCI/PCIe network interface v2.
|
||||
*/
|
||||
typedef struct MchiNetworkDeviceDescPciv2Data {
|
||||
/// Length of this structure.
|
||||
UINT8 Length;
|
||||
|
||||
/// Vendor Id.
|
||||
UINT16 VendorId;
|
||||
|
||||
/// Device Id.
|
||||
UINT16 DeviceId;
|
||||
|
||||
/// Subsystem Vendor Id.
|
||||
UINT16 SubSystemVendorId;
|
||||
|
||||
/// Subsystem Id.
|
||||
UINT16 SubSystemId;
|
||||
|
||||
/// MAC address (v2 only).
|
||||
UINT8 MacAddress[6];
|
||||
|
||||
/// Segment group number
|
||||
UINT16 Segment;
|
||||
|
||||
/// Bus
|
||||
UINT8 Bus;
|
||||
|
||||
/*
|
||||
* Function (device) number (v2 only):
|
||||
* Bits 7:3 - Device Number
|
||||
* Bits 2:0 - Function Number
|
||||
*/
|
||||
UINT8 Function;
|
||||
|
||||
/// Device Characteristics (version 2 only).
|
||||
UINT16 Characteristic;
|
||||
|
||||
/// Credential bootstrapping with IPMI interface (Type 38) otherwise 0xFFFF.
|
||||
UINT16 CredentialBootStrappingHandle;
|
||||
} MCHI_NETWORK_DEVICE_DESC_PCI_V2_DATA;
|
||||
|
||||
/** Interface-specific OEM data for interface type 40h (Network)
|
||||
|
||||
See DSP0270 7.3.6 Table 8: Device descriptor data for device type 80h-FFh,
|
||||
OEM device.
|
||||
*/
|
||||
typedef struct MchiNetworkDeviceDescOemData {
|
||||
/// Vendor IANA
|
||||
UINT32 Iana;
|
||||
|
||||
/// Followed by OEM defined data.
|
||||
} MCHI_NETWORK_DEVICE_DESC_OEM_DATA;
|
||||
|
||||
/** Assignment and discovery type values
|
||||
|
||||
See DSP0270 7.4.2 Table 12
|
||||
*/
|
||||
typedef enum RedfishIpType {
|
||||
RedfishIpTypeUnknown = 0x00,
|
||||
RedfishIpTypeStatic = 0x01,
|
||||
RedfishIpTypeDhcp = 0x02,
|
||||
RedfishIpTypeAutoConfigure = 0x03,
|
||||
RedfishIpTypeHostSelected = 0x04,
|
||||
RedfishIpTypeMax,
|
||||
} REDFISH_IP_TYPE;
|
||||
|
||||
/** IP address format values
|
||||
|
||||
See DSP0270 7.4.3 Table 13
|
||||
*/
|
||||
typedef enum RedfishIpAddressFormat {
|
||||
RedfishIpFormatUnknown = 0x00,
|
||||
RedfishIpFormatIpv4 = 0x01,
|
||||
RedfishIpFormatIpv6 = 0x02,
|
||||
RedfishIpFormatMax,
|
||||
} REDFISH_IP_ADDRESS_FORMAT;
|
||||
|
||||
/** Redfish over IP protocol-specific record data
|
||||
|
||||
See DSP0270 7.4.1 Table 11
|
||||
*/
|
||||
typedef struct RedfishProtocolOverIpData {
|
||||
/// Service UUID.
|
||||
EFI_GUID ServiceUuid;
|
||||
|
||||
/// Host Ip assignment type.
|
||||
UINT8 HostIpAssignType;
|
||||
|
||||
/// Host Ip address format.
|
||||
UINT8 HostIpAddressFormat;
|
||||
|
||||
/// Host Ip address.
|
||||
UINT8 HostIpAddress[16];
|
||||
|
||||
/// Host Ip mask.
|
||||
UINT8 HostIpMask[16];
|
||||
|
||||
/// Service Ip discovery type.
|
||||
UINT8 ServiceIpDiscoveryType;
|
||||
|
||||
/// Service Ip address format.
|
||||
UINT8 ServiceIpAddressFormat;
|
||||
|
||||
/// Service Ip address.
|
||||
UINT8 ServiceIpAddress[16];
|
||||
|
||||
/// Service Ip Mask.
|
||||
UINT8 ServiceIpMask[16];
|
||||
|
||||
/// Service Ip Port.
|
||||
UINT16 ServiceIpPort;
|
||||
|
||||
/// Service Vlan Id.
|
||||
UINT32 ServiceVlanId;
|
||||
|
||||
/// Length of Hostname
|
||||
UINT8 HostnameLength;
|
||||
|
||||
/// followed by Hostname
|
||||
} REDFISH_PROTOCOL_OVER_IP_DATA;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
/* Note. GetSizeof should get the number of string in the string table. */
|
||||
60
MdePkg/Include/IndustryStandard/MctpHostInterface.h
Normal file
60
MdePkg/Include/IndustryStandard/MctpHostInterface.h
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2026, Arm Limited. All rights reserved.
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
@par Reference:
|
||||
- DSP0256 version 2.0.0. (https://www.dmtf.org/dsp/DSP0256)
|
||||
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MCTP_PROTOCOL_MAJOR_VERSION_SHIFT (8)
|
||||
#define MCTP_PROTOCOL_MAJOR_VERSION_MASK (0xff00)
|
||||
#define MCTP_PROTOCOL_MINOR_VERSION_SHIFT (0)
|
||||
#define MCTP_PROTOCOL_MINOR_VERSION_MASK (0x00ff)
|
||||
#define MCTP_PROTOCOL_VERSION_INFO(major, minor) \
|
||||
((UINT16)((((major) & ((MCTP_PROTOCOL_MAJOR_VERSION_MASK >> \
|
||||
MCTP_PROTOCOL_MAJOR_VERSION_SHIFT))) << \
|
||||
MCTP_PROTOCOL_MAJOR_VERSION_SHIFT) | \
|
||||
(((minor) & MCTP_PROTOCOL_MINOR_VERSION_MASK) << \
|
||||
MCTP_PROTOCOL_MINOR_VERSION_SHIFT)))
|
||||
|
||||
#define MCTP_CHARACTERISTIC_HAS_ACPI_DSDT_DEVICE (BIT0)
|
||||
#define MCTP_CHARACTERISTIC_RESERVED_BITS (~(BIT0))
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/** A structure that describes MCHI MCTP MMBI specific data.
|
||||
|
||||
See DSP0256 9.2 Table 3: Interface Type Specific Data.
|
||||
**/
|
||||
typedef struct MchiMctpMmbiSpecificData {
|
||||
/// A pointer to the MMBI capability pointer.
|
||||
UINT64 MmbiCapDesPointer;
|
||||
} MCHI_MCTP_MMBI_SPECIFIC_DATA;
|
||||
|
||||
/** A structure that describes MCTP protocol specific data.
|
||||
|
||||
See DSP0256 9.1 Table 2: Protocol Type Specific Data.
|
||||
**/
|
||||
typedef struct MctpProtocolData {
|
||||
/// Version (Major[15:8], Minor[7:0]).
|
||||
UINT16 Version;
|
||||
|
||||
/// Link-layer type.
|
||||
UINT8 LinkLayerType;
|
||||
|
||||
/// Reserved.
|
||||
UINT8 Reserved0;
|
||||
|
||||
/// Instance Number.
|
||||
UINT32 Instance;
|
||||
|
||||
/// Characteristics
|
||||
UINT32 Characteristics;
|
||||
} MCTP_PROTOCOL_DATA;
|
||||
|
||||
#pragma pack()
|
||||
Loading…
Add table
Add a link
Reference in a new issue