mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-25 06:34:30 +02:00
DynamicTablesPkg: Introduce ObjectId to validate CmObject Parser Array
Add ObjectId to CM_OBJ_PARSER_ARRAY so that the code can validate the entries in the Cm object parser array. Also introduce helper macros to populate the Cm Object Parser Arrays. Cc: Pierre Gondois <Pierre.Gondois@arm.com> Cc: Yeo Reum Yun <YeoReum.Yun@arm.com> Cc: AbdulLateef Attar <AbdulLateef.Attar@amd.com> Cc: Jeshua Smith <jeshuas@nvidia.com> Cc: Jeff Brasen <jbrasen@nvidia.com> Cc: Girish Mahadevan <gmahadevan@nvidia.com> Cc: Leif Lindholm <quic_llindhol@quicinc.com> Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
This commit is contained in:
parent
991b70c0da
commit
cb3c2362cd
@ -670,103 +670,58 @@ STATIC CONST CM_OBJ_PARSER CmArmPsdInfoParser[] = {
|
||||
/** A parser for Arm namespace objects.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = {
|
||||
{ "EArmObjReserved", NULL, 0 },
|
||||
{ "EArmObjBootArchInfo", CmArmBootArchInfoParser,
|
||||
ARRAY_SIZE (CmArmBootArchInfoParser) },
|
||||
{ "EArmObjCpuInfo", NULL, 0 },
|
||||
{ "EArmObjPowerManagementProfileInfo", CmArmPowerManagementProfileInfoParser,
|
||||
ARRAY_SIZE (CmArmPowerManagementProfileInfoParser) },
|
||||
{ "EArmObjGicCInfo", CmArmGicCInfoParser, ARRAY_SIZE (CmArmGicCInfoParser) },
|
||||
{ "EArmObjGicDInfo", CmArmGicDInfoParser, ARRAY_SIZE (CmArmGicDInfoParser) },
|
||||
{ "EArmObjGicMsiFrameInfo", CmArmGicMsiFrameInfoParser,
|
||||
ARRAY_SIZE (CmArmGicMsiFrameInfoParser) },
|
||||
{ "EArmObjGicRedistributorInfo", CmArmGicRedistInfoParser,
|
||||
ARRAY_SIZE (CmArmGicRedistInfoParser) },
|
||||
{ "EArmObjGicItsInfo", CmArmGicItsInfoParser,
|
||||
ARRAY_SIZE (CmArmGicItsInfoParser) },
|
||||
{ "EArmObjSerialConsolePortInfo", CmArmSerialPortInfoParser,
|
||||
ARRAY_SIZE (CmArmSerialPortInfoParser) },
|
||||
{ "EArmObjSerialDebugPortInfo", CmArmSerialPortInfoParser,
|
||||
ARRAY_SIZE (CmArmSerialPortInfoParser) },
|
||||
{ "EArmObjGenericTimerInfo", CmArmGenericTimerInfoParser,
|
||||
ARRAY_SIZE (CmArmGenericTimerInfoParser) },
|
||||
{ "EArmObjPlatformGTBlockInfo", CmArmGTBlockInfoParser,
|
||||
ARRAY_SIZE (CmArmGTBlockInfoParser) },
|
||||
{ "EArmObjGTBlockTimerFrameInfo", CmArmGTBlockTimerFrameInfoParser,
|
||||
ARRAY_SIZE (CmArmGTBlockTimerFrameInfoParser) },
|
||||
{ "EArmObjPlatformGenericWatchdogInfo", CmArmGenericWatchdogInfoParser,
|
||||
ARRAY_SIZE (CmArmGenericWatchdogInfoParser) },
|
||||
{ "EArmObjPciConfigSpaceInfo", CmArmPciConfigSpaceInfoParser,
|
||||
ARRAY_SIZE (CmArmPciConfigSpaceInfoParser) },
|
||||
{ "EArmObjHypervisorVendorIdentity", CmArmHypervisorVendorIdParser,
|
||||
ARRAY_SIZE (CmArmHypervisorVendorIdParser) },
|
||||
{ "EArmObjFixedFeatureFlags", CmArmFixedFeatureFlagsParser,
|
||||
ARRAY_SIZE (CmArmFixedFeatureFlagsParser) },
|
||||
{ "EArmObjItsGroup", CmArmItsGroupNodeParser,
|
||||
ARRAY_SIZE (CmArmItsGroupNodeParser) },
|
||||
{ "EArmObjNamedComponent", CmArmNamedComponentNodeParser,
|
||||
ARRAY_SIZE (CmArmNamedComponentNodeParser) },
|
||||
{ "EArmObjRootComplex", CmArmRootComplexNodeParser,
|
||||
ARRAY_SIZE (CmArmRootComplexNodeParser) },
|
||||
{ "EArmObjSmmuV1SmmuV2", CmArmSmmuV1SmmuV2NodeParser,
|
||||
ARRAY_SIZE (CmArmSmmuV1SmmuV2NodeParser) },
|
||||
{ "EArmObjSmmuV3", CmArmSmmuV3NodeParser,
|
||||
ARRAY_SIZE (CmArmSmmuV3NodeParser) },
|
||||
{ "EArmObjPmcg", CmArmPmcgNodeParser, ARRAY_SIZE (CmArmPmcgNodeParser) },
|
||||
{ "EArmObjGicItsIdentifierArray", CmArmGicItsIdentifierParser,
|
||||
ARRAY_SIZE (CmArmGicItsIdentifierParser) },
|
||||
{ "EArmObjIdMappingArray", CmArmIdMappingParser,
|
||||
ARRAY_SIZE (CmArmIdMappingParser) },
|
||||
{ "EArmObjSmmuInterruptArray", CmArmGenericInterruptParser,
|
||||
ARRAY_SIZE (CmArmGenericInterruptParser) },
|
||||
{ "EArmObjProcHierarchyInfo", CmArmProcHierarchyInfoParser,
|
||||
ARRAY_SIZE (CmArmProcHierarchyInfoParser) },
|
||||
{ "EArmObjCacheInfo", CmArmCacheInfoParser,
|
||||
ARRAY_SIZE (CmArmCacheInfoParser) },
|
||||
{ "EArmObjReserved29", NULL, 0 },
|
||||
{ "EArmObjCmRef", CmArmObjRefParser, ARRAY_SIZE (CmArmObjRefParser) },
|
||||
{ "EArmObjMemoryAffinityInfo", CmArmMemoryAffinityInfoParser,
|
||||
ARRAY_SIZE (CmArmMemoryAffinityInfoParser) },
|
||||
{ "EArmObjDeviceHandleAcpi", CmArmDeviceHandleAcpiParser,
|
||||
ARRAY_SIZE (CmArmDeviceHandleAcpiParser) },
|
||||
{ "EArmObjDeviceHandlePci", CmArmDeviceHandlePciParser,
|
||||
ARRAY_SIZE (CmArmDeviceHandlePciParser) },
|
||||
{ "EArmObjGenericInitiatorAffinityInfo",
|
||||
CmArmGenericInitiatorAffinityInfoParser,
|
||||
ARRAY_SIZE (CmArmGenericInitiatorAffinityInfoParser) },
|
||||
{ "EArmObjSerialPortInfo", CmArmSerialPortInfoParser,
|
||||
ARRAY_SIZE (CmArmSerialPortInfoParser) },
|
||||
{ "EArmObjCmn600Info", CmArmCmn600InfoParser,
|
||||
ARRAY_SIZE (CmArmCmn600InfoParser) },
|
||||
{ "EArmObjLpiInfo", CmArmLpiInfoParser,
|
||||
ARRAY_SIZE (CmArmLpiInfoParser) },
|
||||
{ "EArmObjPciAddressMapInfo", CmArmPciAddressMapInfoParser,
|
||||
ARRAY_SIZE (CmArmPciAddressMapInfoParser) },
|
||||
{ "EArmObjPciInterruptMapInfo", CmPciInterruptMapInfoParser,
|
||||
ARRAY_SIZE (CmPciInterruptMapInfoParser) },
|
||||
{ "EArmObjRmr", CmArmRmrInfoParser,
|
||||
ARRAY_SIZE (CmArmRmrInfoParser) },
|
||||
{ "EArmObjMemoryRangeDescriptor", CmArmMemoryRangeDescriptorInfoParser,
|
||||
ARRAY_SIZE (CmArmMemoryRangeDescriptorInfoParser) },
|
||||
{ "EArmObjCpcInfo", CmArmCpcInfoParser,
|
||||
ARRAY_SIZE (CmArmCpcInfoParser) },
|
||||
{ "EArmObjPccSubspaceType0Info", CmArmPccSubspaceType0InfoParser,
|
||||
ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },
|
||||
{ "EArmObjPccSubspaceType1Info", CmArmPccSubspaceType1InfoParser,
|
||||
ARRAY_SIZE (CmArmPccSubspaceType1InfoParser) },
|
||||
{ "EArmObjPccSubspaceType2Info", CmArmPccSubspaceType2InfoParser,
|
||||
ARRAY_SIZE (CmArmPccSubspaceType2InfoParser) },
|
||||
{ "EArmObjPccSubspaceType3Info", CmArmPccSubspaceType34InfoParser,
|
||||
ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },
|
||||
{ "EArmObjPccSubspaceType4Info", CmArmPccSubspaceType34InfoParser,
|
||||
ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },
|
||||
{ "EArmObjPccSubspaceType5Info", CmArmPccSubspaceType5InfoParser,
|
||||
ARRAY_SIZE (CmArmPccSubspaceType5InfoParser) },
|
||||
{ "EArmObjEtInfo", CmArmEtInfo,
|
||||
ARRAY_SIZE (CmArmEtInfo) },
|
||||
{ "EArmObjPsdInfo", CmArmPsdInfoParser,
|
||||
ARRAY_SIZE (CmArmPsdInfoParser) },
|
||||
{ "EArmObjMax", NULL, 0 },
|
||||
CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjBootArchInfo, CmArmBootArchInfoParser),
|
||||
CM_PARSER_ADD_OBJECT_RESERVED (EArmObjCpuInfo),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPowerManagementProfileInfo, CmArmPowerManagementProfileInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGicCInfo, CmArmGicCInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGicDInfo, CmArmGicDInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGicMsiFrameInfo, CmArmGicMsiFrameInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGicRedistributorInfo, CmArmGicRedistInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGicItsInfo, CmArmGicItsInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjSerialConsolePortInfo, CmArmSerialPortInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjSerialDebugPortInfo, CmArmSerialPortInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGenericTimerInfo, CmArmGenericTimerInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPlatformGTBlockInfo, CmArmGTBlockInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo, CmArmGTBlockTimerFrameInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPlatformGenericWatchdogInfo, CmArmGenericWatchdogInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPciConfigSpaceInfo, CmArmPciConfigSpaceInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjHypervisorVendorIdentity, CmArmHypervisorVendorIdParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjFixedFeatureFlags, CmArmFixedFeatureFlagsParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjItsGroup, CmArmItsGroupNodeParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjNamedComponent, CmArmNamedComponentNodeParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjRootComplex, CmArmRootComplexNodeParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjSmmuV1SmmuV2, CmArmSmmuV1SmmuV2NodeParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjSmmuV3, CmArmSmmuV3NodeParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPmcg, CmArmPmcgNodeParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGicItsIdentifierArray, CmArmGicItsIdentifierParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjIdMappingArray, CmArmIdMappingParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray, CmArmGenericInterruptParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo, CmArmProcHierarchyInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjCacheInfo, CmArmCacheInfoParser),
|
||||
CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved29),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjCmRef, CmArmObjRefParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjMemoryAffinityInfo, CmArmMemoryAffinityInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi, CmArmDeviceHandleAcpiParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci, CmArmDeviceHandlePciParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjGenericInitiatorAffinityInfo,CmArmGenericInitiatorAffinityInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjSerialPortInfo, CmArmSerialPortInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjCmn600Info, CmArmCmn600InfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjLpiInfo, CmArmLpiInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPciAddressMapInfo, CmArmPciAddressMapInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPciInterruptMapInfo, CmPciInterruptMapInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjRmr, CmArmRmrInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjMemoryRangeDescriptor, CmArmMemoryRangeDescriptorInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjCpcInfo, CmArmCpcInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType0Info, CmArmPccSubspaceType0InfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType1Info, CmArmPccSubspaceType1InfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType2Info, CmArmPccSubspaceType2InfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType3Info, CmArmPccSubspaceType34InfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType4Info, CmArmPccSubspaceType34InfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType5Info, CmArmPccSubspaceType5InfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjEtInfo, CmArmEtInfo),
|
||||
CM_PARSER_ADD_OBJECT (EArmObjPsdInfo, CmArmPsdInfoParser),
|
||||
CM_PARSER_ADD_OBJECT_RESERVED (EArmObjMax)
|
||||
};
|
||||
|
||||
/** A parser for EStdObjCfgMgrInfo.
|
||||
@ -798,13 +753,10 @@ STATIC CONST CM_OBJ_PARSER StdObjSmbiosTableInfoParser[] = {
|
||||
/** A parser for Standard namespace objects.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER_ARRAY StdNamespaceObjectParser[] = {
|
||||
{ "EStdObjCfgMgrInfo", StdObjCfgMgrInfoParser,
|
||||
ARRAY_SIZE (StdObjCfgMgrInfoParser) },
|
||||
{ "EStdObjAcpiTableList", StdObjAcpiTableInfoParser,
|
||||
ARRAY_SIZE (StdObjAcpiTableInfoParser) },
|
||||
{ "EStdObjSmbiosTableList", StdObjSmbiosTableInfoParser,
|
||||
ARRAY_SIZE (StdObjSmbiosTableInfoParser) },
|
||||
{ "EStdObjMax", NULL, 0}
|
||||
CM_PARSER_ADD_OBJECT (EStdObjCfgMgrInfo, StdObjCfgMgrInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EStdObjAcpiTableList, StdObjAcpiTableInfoParser),
|
||||
CM_PARSER_ADD_OBJECT (EStdObjSmbiosTableList, StdObjSmbiosTableInfoParser),
|
||||
CM_PARSER_ADD_OBJECT_RESERVED (EStdObjMax)
|
||||
};
|
||||
|
||||
/** Print string data.
|
||||
@ -975,7 +927,7 @@ PrintCmObjDesc (
|
||||
*RemainingSize -= Parser[Index].Length;
|
||||
if (*RemainingSize < 0) {
|
||||
DEBUG ((
|
||||
DEBUG_INFO,
|
||||
DEBUG_ERROR,
|
||||
"\nERROR: %a: Buffer overrun\n",
|
||||
Parser[Index].NameStr
|
||||
));
|
||||
@ -1118,6 +1070,9 @@ ParseCmObjDesc (
|
||||
ObjIndex + 1,
|
||||
ObjectCount
|
||||
));
|
||||
|
||||
ASSERT (ObjId == ParserArray->ObjectId);
|
||||
|
||||
if (ParserArray->Parser == NULL) {
|
||||
DEBUG ((DEBUG_ERROR, "Parser not implemented\n"));
|
||||
RemainingSize = 0;
|
||||
|
@ -11,6 +11,18 @@
|
||||
|
||||
#define OUTPUT_FIELD_COLUMN_WIDTH 32
|
||||
|
||||
/** A helper macro for populating the Reserved objects
|
||||
like EArmObjReserved, EArmObjMax, etc. in the CM_OBJ_PARSER_ARRAY.
|
||||
**/
|
||||
#define CM_PARSER_ADD_OBJECT_RESERVED(ObjectId) \
|
||||
{ObjectId, #ObjectId, NULL, 0}
|
||||
|
||||
/** A helper macro for populating the Cm Arm objects
|
||||
in the CM_OBJ_PARSER_ARRAY.
|
||||
**/
|
||||
#define CM_PARSER_ADD_OBJECT(ObjectId, Parser) \
|
||||
{ObjectId, #ObjectId, Parser, ARRAY_SIZE(Parser) }
|
||||
|
||||
/** Function prototype to format a field print.
|
||||
|
||||
@param [in] Format Format string for tracing the data as specified by
|
||||
@ -58,6 +70,9 @@ struct CmObjParser {
|
||||
with their object names.
|
||||
*/
|
||||
typedef struct CmObjParserArray {
|
||||
/// Object ID
|
||||
CONST UINTN ObjectId;
|
||||
|
||||
/// Object name
|
||||
CONST CHAR8 *ObjectName;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user