DynamicTablesPkg: Add System Information CM object and parser

Add EArchCommonObjSystemInfo to ArchCommonNameSpaceObjects.h and a
corresponding parser entry in ConfigurationManagerObjectParser.c.

Signed-off-by: Girish Mahadevan <gmahadevan@nvidia.com>
This commit is contained in:
Girish Mahadevan 2026-04-20 21:50:31 +00:00 committed by mergify[bot]
parent 2fc0e060ef
commit 7ac27b187e
2 changed files with 142 additions and 66 deletions

View file

@ -93,6 +93,7 @@ typedef enum ArchCommonObjectID {
EArchCommonObjMemoryChannelInfo, ///< 64 - Memory Channel Info
EArchCommonObjMemoryChannelDevice, ///< 65 - Memory Channel Device Info
EArchCommonObjProcessorSpecificBlockInfo, ///< 66 - Processor specific data Info
EArchCommonObjSystemInfo, ///< 67 - System Info
EArchCommonObjMax
} EARCH_COMMON_OBJECT_ID;
@ -1727,4 +1728,31 @@ typedef struct CmArchCommonProcessorSpecificBlockInfo {
CM_OBJECT_TOKEN ArchProcessorSpecificDataToken;
} CM_ARCH_COMMON_PROCESSOR_SPECIFIC_BLOCK_INFO;
/** A structure that describes System Information.
SMBIOS Specification v3.9.0 Type 1
ID: EArchCommonObjSystemInfo
**/
typedef struct CmArchCommonSystemInfo {
/// CM Object Token uniquely identifying this System Information entry.
CM_OBJECT_TOKEN SystemInfoToken;
/// Manufacturer of the system.
CHAR8 Manufacturer[SMBIOS_MAX_STRING_SIZE];
/// Product name of the system.
CHAR8 ProductName[SMBIOS_MAX_STRING_SIZE];
/// Version of the system.
CHAR8 Version[SMBIOS_MAX_STRING_SIZE];
/// Serial number of the system.
CHAR8 SerialNum[SMBIOS_MAX_STRING_SIZE];
/// Universal unique ID of the system.
GUID Uuid;
/// Identifies the event that caused the system to power up.
UINT8 WakeUpType;
/// SKU number of the system.
CHAR8 SkuNum[SMBIOS_MAX_STRING_SIZE];
/// Family that the system belongs to.
CHAR8 Family[SMBIOS_MAX_STRING_SIZE];
} CM_ARCH_COMMON_SYSTEM_INFO;
#pragma pack()

View file

@ -41,6 +41,15 @@ PrintChars (
UINT32 Length
);
STATIC
VOID
EFIAPI
PrintGuid (
CONST CHAR8 *Format,
UINT8 *Ptr,
UINT32 Length
);
STATIC
VOID
EFIAPI
@ -1320,76 +1329,92 @@ STATIC CONST CM_OBJ_PARSER CmArchCommonSystemResetInfoParser[] = {
{ "Timeout", sizeof (UINT16), "0x%x", NULL },
};
/** A parser for EArchCommonObjSystemInfo.
*/
STATIC CONST CM_OBJ_PARSER CmArchCommonSystemInfoParser[] = {
{ "SystemInfoToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
{ "Manufacturer", SMBIOS_MAX_STRING_SIZE, NULL, PrintString },
{ "ProductName", SMBIOS_MAX_STRING_SIZE, NULL, PrintString },
{ "Version", SMBIOS_MAX_STRING_SIZE, NULL, PrintString },
{ "SerialNum", SMBIOS_MAX_STRING_SIZE, NULL, PrintString },
{ "Uuid", sizeof (GUID), NULL, PrintGuid },
{ "WakeUpType", sizeof (UINT8), "0x%x", NULL },
{ "SkuNum", SMBIOS_MAX_STRING_SIZE, NULL, PrintString },
{ "Family", SMBIOS_MAX_STRING_SIZE, NULL, PrintString },
};
/** A parser for Arch Common namespace objects.
*/
STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceObjectParser[] = {
CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjReserved),
CM_PARSER_ADD_OBJECT (EArchCommonObjPowerManagementProfileInfo, CmArchCommonPowerManagementProfileInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSerialPortInfo, CmArchCommonSerialPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjConsolePortInfo, CmArchCommonSerialPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo, CmArchCommonSerialPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjHypervisorVendorIdentity, CmArchCommonHypervisorVendorIdentityParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjFixedFeatureFlags, CmArchCommonFixedFeatureFlagsParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCmRef, CmArchCommonObjRefParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciConfigSpaceInfo, CmArchCommonPciConfigSpaceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciAddressMapInfo, CmArchCommonPciAddressMapInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciInterruptMapInfo, CmArchCommonPciInterruptMapInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryAffinityInfo, CmArchCommonMemoryAffinityInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandleAcpi, CmArchCommonDeviceHandleAcpiParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandlePci, CmArchCommonDeviceHandlePciParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjGenericInitiatorAffinityInfo, CmArchCommonGenericInitiatorAffinityInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjLpiInfo, CmArchCommonLpiInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjProcHierarchyInfo, CmArchCommonProcHierarchyInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCacheInfo, CmArchCommonCacheInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCpcInfo, CmArchCommonCpcInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType0Info, CmArchCommonPccSubspaceType0InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType1Info, CmArchCommonPccSubspaceType1InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType2Info, CmArchCommonPccSubspaceType2InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType3Info, CmArchCommonPccSubspaceType34InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType4Info, CmArchCommonPccSubspaceType34InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType5Info, CmArchCommonPccSubspaceType5InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPsdInfo, CmArchCommonPsdInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjTpm2InterfaceInfo, CmArchCommonTpm2InterfaceInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjSpmiInterfaceInfo, CmArchCommonSpmiInterfaceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSpmiInterruptDeviceInfo, CmArchCommonSpmiInterruptDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCstInfo, CmArchCommonCstInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCsdInfo, CmArchCommonCsdInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPctInfo, CmArchCommonPctInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPssInfo, CmArchCommonPssInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPpcInfo, CmArchCommonPpcInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjStaInfo, CmArchCommonStaInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryRangeDescriptor, CmArchCommonObjMemoryRangeDescriptor),
CM_PARSER_ADD_OBJECT (EArchCommonObjGenericDbg2DeviceInfo, CmArchCommonObjDbg2DeviceInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjCxlHostBridgeInfo, CmArchCommonObjCxlHostBridgeInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjCxlFixedMemoryWindowInfo, CmArchCommonObjCxlFixedMemoryWindowInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjProximityDomainInfo, CmArchCommonProximityDomainInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjProximityDomainRelationInfo, CmArchCommonProximityDomainRelationInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjSystemLocalityInfo, CmArchCommonSystemLocalityInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryProximityDomainAttrInfo,CmArchCommonMemoryProximityDomainAttrInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryLatBwInfo, CmArchCommonMemoryLatBwInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryCacheInfo, CmArchCommonMemoryCacheInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjSpcrInfo, CmArchCommonObjSpcrInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjTpm2DeviceInfo, CmArchCommonObjTpm2DeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMcfgPciConfigSpaceInfo, CmArchCommonPciConfigSpaceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciRootPortInfo, CmArchCommonObjPciRootPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourcePciRootPortInfo, CmArchCommonObjErrSourcePciRootPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourcePciDeviceInfo, CmArchCommonObjErrSourcePciDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourcePciBridgeInfo, CmArchCommonObjErrSourcePciBridgeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourceGenericHwInfo, CmArchCommonObjErrSourceGenericHwInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourceGenericHwVer2Info, CmArchCommonObjErrSourceGenericHwVer2InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjEinjInstructionsInfo, CmArchCommonObjEinjInstructionsInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPlatformFwInfo, CmArchCommonPlatformFwInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPhysicalMemoryArray, CmArchCommonPhysicalMemoryArrayParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryDeviceInfo, CmArchCommonMemoryDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryArrayMappedAddress, CmArchCommonMemoryArrayMappedAddressParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCoolingDeviceInfo, CmArchCommonCoolingDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjTemperatureProbeInfo, CmArchCommonTemperatureProbeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjVoltageProbeInfo, CmArchCommonVoltageProbeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjElectricalCurrentProbeInfo, CmArchCommonElectricalCurrentProbeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSystemResetInfo, CmArchCommonSystemResetInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryDeviceMappedAddress, CmArchCommonMemoryDeviceMappedAddressParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryChannelInfo, CmArchCommonMemoryChannelInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryChannelDevice, CmArchCommonMemoryChannelDeviceParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPowerManagementProfileInfo, CmArchCommonPowerManagementProfileInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSerialPortInfo, CmArchCommonSerialPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjConsolePortInfo, CmArchCommonSerialPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo, CmArchCommonSerialPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjHypervisorVendorIdentity, CmArchCommonHypervisorVendorIdentityParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjFixedFeatureFlags, CmArchCommonFixedFeatureFlagsParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCmRef, CmArchCommonObjRefParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciConfigSpaceInfo, CmArchCommonPciConfigSpaceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciAddressMapInfo, CmArchCommonPciAddressMapInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciInterruptMapInfo, CmArchCommonPciInterruptMapInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryAffinityInfo, CmArchCommonMemoryAffinityInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandleAcpi, CmArchCommonDeviceHandleAcpiParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandlePci, CmArchCommonDeviceHandlePciParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjGenericInitiatorAffinityInfo, CmArchCommonGenericInitiatorAffinityInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjLpiInfo, CmArchCommonLpiInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjProcHierarchyInfo, CmArchCommonProcHierarchyInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCacheInfo, CmArchCommonCacheInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCpcInfo, CmArchCommonCpcInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType0Info, CmArchCommonPccSubspaceType0InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType1Info, CmArchCommonPccSubspaceType1InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType2Info, CmArchCommonPccSubspaceType2InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType3Info, CmArchCommonPccSubspaceType34InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType4Info, CmArchCommonPccSubspaceType34InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType5Info, CmArchCommonPccSubspaceType5InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPsdInfo, CmArchCommonPsdInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjTpm2InterfaceInfo, CmArchCommonTpm2InterfaceInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjSpmiInterfaceInfo, CmArchCommonSpmiInterfaceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSpmiInterruptDeviceInfo, CmArchCommonSpmiInterruptDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCstInfo, CmArchCommonCstInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCsdInfo, CmArchCommonCsdInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPctInfo, CmArchCommonPctInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPssInfo, CmArchCommonPssInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPpcInfo, CmArchCommonPpcInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjStaInfo, CmArchCommonStaInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryRangeDescriptor, CmArchCommonObjMemoryRangeDescriptor),
CM_PARSER_ADD_OBJECT (EArchCommonObjGenericDbg2DeviceInfo, CmArchCommonObjDbg2DeviceInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjCxlHostBridgeInfo, CmArchCommonObjCxlHostBridgeInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjCxlFixedMemoryWindowInfo, CmArchCommonObjCxlFixedMemoryWindowInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjProximityDomainInfo, CmArchCommonProximityDomainInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjProximityDomainRelationInfo, CmArchCommonProximityDomainRelationInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjSystemLocalityInfo, CmArchCommonSystemLocalityInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryProximityDomainAttrInfo, CmArchCommonMemoryProximityDomainAttrInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryLatBwInfo, CmArchCommonMemoryLatBwInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryCacheInfo, CmArchCommonMemoryCacheInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjSpcrInfo, CmArchCommonObjSpcrInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjTpm2DeviceInfo, CmArchCommonObjTpm2DeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMcfgPciConfigSpaceInfo, CmArchCommonPciConfigSpaceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPciRootPortInfo, CmArchCommonObjPciRootPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourcePciRootPortInfo, CmArchCommonObjErrSourcePciRootPortInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourcePciDeviceInfo, CmArchCommonObjErrSourcePciDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourcePciBridgeInfo, CmArchCommonObjErrSourcePciBridgeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourceGenericHwInfo, CmArchCommonObjErrSourceGenericHwInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjErrSourceGenericHwVer2Info, CmArchCommonObjErrSourceGenericHwVer2InfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjEinjInstructionsInfo, CmArchCommonObjEinjInstructionsInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPlatformFwInfo, CmArchCommonPlatformFwInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjPhysicalMemoryArray, CmArchCommonPhysicalMemoryArrayParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryDeviceInfo, CmArchCommonMemoryDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryArrayMappedAddress, CmArchCommonMemoryArrayMappedAddressParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjCoolingDeviceInfo, CmArchCommonCoolingDeviceInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjTemperatureProbeInfo, CmArchCommonTemperatureProbeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjVoltageProbeInfo, CmArchCommonVoltageProbeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjElectricalCurrentProbeInfo, CmArchCommonElectricalCurrentProbeInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjSystemResetInfo, CmArchCommonSystemResetInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryDeviceMappedAddress, CmArchCommonMemoryDeviceMappedAddressParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryChannelInfo, CmArchCommonMemoryChannelInfoParser),
CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryChannelDevice, CmArchCommonMemoryChannelDeviceParser),
CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjProcessorSpecificBlockInfo),
CM_PARSER_ADD_OBJECT (EArchCommonObjSystemInfo, CmArchCommonSystemInfoParser),
CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
};
@ -1786,6 +1811,29 @@ PrintString (
DEBUG ((DEBUG_INFO, "%a", Ptr));
}
/** Print GUID data.
@param [in] Format Format to print the Ptr.
@param [in] Ptr Pointer to the GUID.
@param [in] Length Length of the field.
**/
STATIC
VOID
EFIAPI
PrintGuid (
IN CONST CHAR8 *Format,
IN UINT8 *Ptr,
IN UINT32 Length
)
{
if ((Ptr == NULL) || (Length != sizeof (GUID))) {
ASSERT (0);
return;
}
DEBUG ((DEBUG_INFO, "%g", (GUID *)Ptr));
}
/** Print string from pointer.
The string must be NULL terminated.