VirtualBox

Ignore:
Timestamp:
Mar 31, 2025 11:31:09 AM (2 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168237
Message:

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c

    r105670 r108794  
    33
    44  Copyright (c) 2021 - 2023, ARM Limited. All rights reserved.<BR>
     5  Copyright (C) 2024 - 2025 Advanced Micro Devices, Inc. All rights reserved.
     6  Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.<BR>
    57  SPDX-License-Identifier: BSD-2-Clause-Patent
    68
     
    1719PrintString (
    1820  CONST CHAR8  *Format,
    19   UINT8        *Ptr
     21  UINT8        *Ptr,
     22  UINT32       Length
    2023  );
    2124
     
    2528PrintStringPtr (
    2629  CONST CHAR8  *Format,
    27   UINT8        *Ptr
     30  UINT8        *Ptr,
     31  UINT32       Length
    2832  );
    2933
     
    3135VOID
    3236EFIAPI
    33 PrintChar4 (
     37PrintChars (
    3438  CONST CHAR8  *Format,
    35   UINT8        *Ptr
     39  UINT8        *Ptr,
     40  UINT32       Length
    3641  );
    3742
     
    3944VOID
    4045EFIAPI
    41 PrintChar6 (
     46HexDump (
    4247  CONST CHAR8  *Format,
    43   UINT8        *Ptr
    44   );
    45 
    46 STATIC
    47 VOID
    48 EFIAPI
    49 PrintChar8 (
    50   CONST CHAR8  *Format,
    51   UINT8        *Ptr
     48  UINT8        *Ptr,
     49  UINT32       Length
    5250  );
    5351
     
    5856};
    5957
    60 /** A parser for EArmObjPowerManagementProfileInfo.
    61 */
    62 STATIC CONST CM_OBJ_PARSER  CmArmPowerManagementProfileInfoParser[] = {
     58/** A parser for EArchCommonObjPowerManagementProfileInfo.
     59*/
     60STATIC CONST CM_OBJ_PARSER  CmArchCommonPowerManagementProfileInfoParser[] = {
    6361  { "PowerManagementProfile", 1, "0x%x", NULL }
    6462};
     
    123121};
    124122
    125 /** A parser for EArmObjSerialConsolePortInfo,
    126     EArmObjSerialDebugPortInfo and EArmObjSerialPortInfo.
    127 */
    128 STATIC CONST CM_OBJ_PARSER  CmArmSerialPortInfoParser[] = {
     123/** A parser for EArchCommonObjConsolePortInfo,
     124    EArchCommonObjSerialDebugPortInfo and EArchCommonObjSerialPortInfo.
     125*/
     126STATIC CONST CM_OBJ_PARSER  CmArchCommonSerialPortInfoParser[] = {
    129127  { "BaseAddress",       8, "0x%llx", NULL },
    130128  { "Interrupt",         4, "0x%x",   NULL },
     
    183181};
    184182
    185 /** A parser for EArmObjPciConfigSpaceInfo.
    186 */
    187 STATIC CONST CM_OBJ_PARSER  CmArmPciConfigSpaceInfoParser[] = {
     183/** A parser for EArchCommonObjPciConfigSpaceInfo.
     184*/
     185STATIC CONST CM_OBJ_PARSER  CmArchCommonPciConfigSpaceInfoParser[] = {
    188186  { "BaseAddress",           8,                        "0x%llx", NULL },
    189187  { "PciSegmentGroupNumber", 2,                        "0x%x",   NULL },
     
    194192};
    195193
    196 /** A parser for EArmObjHypervisorVendorIdentity.
    197 */
    198 STATIC CONST CM_OBJ_PARSER  CmArmHypervisorVendorIdParser[] = {
     194/** A parser for EArchCommonObjHypervisorVendorIdentity.
     195*/
     196STATIC CONST CM_OBJ_PARSER  CmArchCommonHypervisorVendorIdentityParser[] = {
    199197  { "HypervisorVendorId", 8, "0x%llx", NULL }
    200198};
    201199
    202 /** A parser for EArmObjFixedFeatureFlags.
    203 */
    204 STATIC CONST CM_OBJ_PARSER  CmArmFixedFeatureFlagsParser[] = {
     200/** A parser for EArchCommonObjFixedFeatureFlags.
     201*/
     202STATIC CONST CM_OBJ_PARSER  CmArchCommonFixedFeatureFlagsParser[] = {
    205203  { "Flags", 4, "0x%x", NULL }
    206204};
     
    318316/** A parser for EArmObjSmmuInterruptArray.
    319317*/
    320 STATIC CONST CM_OBJ_PARSER  CmArmGenericInterruptParser[] = {
     318STATIC CONST CM_OBJ_PARSER  CmArchCommonGenericInterruptParser[] = {
    321319  { "Interrupt", 4, "0x%x", NULL },
    322320  { "Flags",     4, "0x%x", NULL }
    323321};
    324322
    325 /** A parser for EArmObjProcHierarchyInfo.
    326 */
    327 STATIC CONST CM_OBJ_PARSER  CmArmProcHierarchyInfoParser[] = {
     323/** A parser for EArchCommonObjProcHierarchyInfo.
     324*/
     325STATIC CONST CM_OBJ_PARSER  CmArchCommonProcHierarchyInfoParser[] = {
    328326  { "Token",                      sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
    329327  { "Flags",                      4,                        "0x%x", NULL },
    330328  { "ParentToken",                sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
    331   { "GicCToken",                  sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
     329  { "AcpiIdObjectToken",          sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
    332330  { "NoOfPrivateResources",       4,                        "0x%x", NULL },
    333331  { "PrivateResourcesArrayToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
     
    338336};
    339337
    340 /** A parser for EArmObjCacheInfo.
    341 */
    342 STATIC CONST CM_OBJ_PARSER  CmArmCacheInfoParser[] = {
     338/** A parser for EArchCommonObjCacheInfo.
     339*/
     340STATIC CONST CM_OBJ_PARSER  CmArchCommonCacheInfoParser[] = {
    343341  { "Token",                 sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
    344342  { "NextLevelOfCacheToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
     
    351349};
    352350
    353 /** A parser for EArmObjProcNodeIdInfo.
    354 */
    355 STATIC CONST CM_OBJ_PARSER  CmArmProcNodeIdInfoParser[] = {
    356   { "Token",    sizeof (CM_OBJECT_TOKEN), "0x%p", NULL },
    357   { "VendorId", 4,                        "0x%p", NULL },
    358   { "Level1Id", 8,                        "0x%x", NULL },
    359   { "Level2Id", 8,                        "0x%x", NULL },
    360   { "MajorRev", 2,                        "0x%x", NULL },
    361   { "MinorRev", 2,                        "0x%x", NULL },
    362   { "SpinRev",  2,                        "0x%x", NULL }
    363 };
    364 
    365 /** A parser for EArmObjCmRef.
    366 */
    367 STATIC CONST CM_OBJ_PARSER  CmArmObjRefParser[] = {
     351/** A parser for EArchCommonObjCmRef.
     352*/
     353STATIC CONST CM_OBJ_PARSER  CmArchCommonObjRefParser[] = {
    368354  { "ReferenceToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL }
    369355};
    370356
    371 /** A parser for EArmObjMemoryAffinityInfo.
    372 */
    373 STATIC CONST CM_OBJ_PARSER  CmArmMemoryAffinityInfoParser[] = {
     357/** A parser for EArchCommonObjMemoryAffinityInfo.
     358*/
     359STATIC CONST CM_OBJ_PARSER  CmArchCommonMemoryAffinityInfoParser[] = {
    374360  { "ProximityDomain", 4, "0x%x",   NULL },
    375361  { "BaseAddress",     8, "0x%llx", NULL },
     
    378364};
    379365
    380 /** A parser for EArmObjDeviceHandleAcpi.
    381 */
    382 STATIC CONST CM_OBJ_PARSER  CmArmDeviceHandleAcpiParser[] = {
     366/** A parser for EArchCommonObjDeviceHandleAcpi.
     367*/
     368STATIC CONST CM_OBJ_PARSER  CmArchCommonDeviceHandleAcpiParser[] = {
    383369  { "Hid", 8, "0x%llx", NULL },
    384370  { "Uid", 4, "0x%x",   NULL }
    385371};
    386372
    387 /** A parser for EArmObjDeviceHandlePci.
    388 */
    389 STATIC CONST CM_OBJ_PARSER  CmArmDeviceHandlePciParser[] = {
     373/** A parser for EArchCommonObjDeviceHandlePci.
     374*/
     375STATIC CONST CM_OBJ_PARSER  CmArchCommonDeviceHandlePciParser[] = {
    390376  { "SegmentNumber",  2, "0x%x", NULL },
    391377  { "BusNumber",      1, "0x%x", NULL },
     
    394380};
    395381
    396 /** A parser for EArmObjGenericInitiatorAffinityInfo.
    397 */
    398 STATIC CONST CM_OBJ_PARSER  CmArmGenericInitiatorAffinityInfoParser[] = {
     382/** A parser for EArchCommonObjGenericInitiatorAffinityInfo.
     383*/
     384STATIC CONST CM_OBJ_PARSER  CmArchCommonGenericInitiatorAffinityInfoParser[] = {
    399385  { "ProximityDomain",   4,                        "0x%x", NULL },
    400386  { "Flags",             4,                        "0x%x", NULL },
     
    430416};
    431417
    432 /** A parser for EArmObjLpiInfo.
    433 */
    434 STATIC CONST CM_OBJ_PARSER  CmArmLpiInfoParser[] = {
     418/** A parser for EArchCommonObjLpiInfo.
     419*/
     420STATIC CONST CM_OBJ_PARSER  CmArchCommonLpiInfoParser[] = {
    435421  { "MinResidency",             4,                                               "0x%x",   NULL        },
    436422  { "WorstCaseWakeLatency",     4,                                               "0x%x",   NULL        },
     
    453439};
    454440
    455 /** A parser for EArmObjPciAddressMapInfo.
    456 */
    457 STATIC CONST CM_OBJ_PARSER  CmArmPciAddressMapInfoParser[] = {
     441/** A parser for EArchCommonObjPciAddressMapInfo.
     442*/
     443STATIC CONST CM_OBJ_PARSER  CmArchCommonPciAddressMapInfoParser[] = {
    458444  { "SpaceCode",   1, "%d",     NULL },
    459445  { "PciAddress",  8, "0x%llx", NULL },
     
    462448};
    463449
    464 /** A parser for EArmObjPciInterruptMapInfo.
    465 */
    466 STATIC CONST CM_OBJ_PARSER  CmPciInterruptMapInfoParser[] = {
    467   { "PciBus",        1,                                 "0x%x", NULL },
    468   { "PciDevice",     1,                                 "0x%x", NULL },
    469   { "PciInterrupt",  1,                                 "0x%x", NULL },
    470   { "IntcInterrupt", sizeof (CM_ARM_GENERIC_INTERRUPT),
    471     NULL, NULL, CmArmGenericInterruptParser,
    472     ARRAY_SIZE (CmArmGenericInterruptParser) },
     450/** A parser for EArchCommonObjPciInterruptMapInfo.
     451*/
     452STATIC CONST CM_OBJ_PARSER  CmArchCommonPciInterruptMapInfoParser[] = {
     453  { "PciBus",        1,                                         "0x%x", NULL },
     454  { "PciDevice",     1,                                         "0x%x", NULL },
     455  { "PciInterrupt",  1,                                         "0x%x", NULL },
     456  { "IntcInterrupt", sizeof (CM_ARCH_COMMON_GENERIC_INTERRUPT),
     457    NULL, NULL, CmArchCommonGenericInterruptParser,
     458    ARRAY_SIZE (CmArchCommonGenericInterruptParser) },
    473459};
    474460
     
    492478};
    493479
    494 /** A parser for EArmObjCpcInfo.
    495 */
    496 STATIC CONST CM_OBJ_PARSER  CmArmCpcInfoParser[] = {
     480/** A parser for EArchCommonObjCpcInfo.
     481*/
     482STATIC CONST CM_OBJ_PARSER  CmArchCommonCpcInfoParser[] = {
    497483  { "Revision",                              4,                                               "0x%lx", NULL },
    498484  { "HighestPerformanceBuffer",              sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
     
    587573};
    588574
    589 /** A parser for EArmObjPccSubspaceType0Info.
    590 */
    591 STATIC CONST CM_OBJ_PARSER  CmArmPccSubspaceType0InfoParser[] = {
     575/** A parser for EArchCommonObjPccSubspaceType0Info.
     576*/
     577STATIC CONST CM_OBJ_PARSER  CmArchCommonPccSubspaceType0InfoParser[] = {
    592578  { "SubspaceId",    1,                                         "0x%x",   NULL },
    593579  { "Type",          1,                                         "0x%x",   NULL },
     
    602588};
    603589
    604 /** A parser for EArmObjPccSubspaceType1Info.
    605 */
    606 STATIC CONST CM_OBJ_PARSER  CmArmPccSubspaceType1InfoParser[] = {
     590/** A parser for EArchCommonObjPccSubspaceType1Info.
     591*/
     592STATIC CONST CM_OBJ_PARSER  CmArchCommonPccSubspaceType1InfoParser[] = {
    607593  { "GenericPccInfo", sizeof (PCC_SUBSPACE_GENERIC_INFO),
    608     NULL, NULL, CmArmPccSubspaceType0InfoParser,
    609     ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },
    610   { "PlatIrq",        sizeof (CM_ARM_GENERIC_INTERRUPT),
    611     NULL, NULL, CmArmGenericInterruptParser,
    612     ARRAY_SIZE (CmArmGenericInterruptParser) },
    613 };
    614 
    615 /** A parser for EArmObjPccSubspaceType2Info.
    616 */
    617 STATIC CONST CM_OBJ_PARSER  CmArmPccSubspaceType2InfoParser[] = {
     594    NULL, NULL, CmArchCommonPccSubspaceType0InfoParser,
     595    ARRAY_SIZE (CmArchCommonPccSubspaceType0InfoParser) },
     596  { "PlatIrq",        sizeof (CM_ARCH_COMMON_GENERIC_INTERRUPT),
     597    NULL, NULL, CmArchCommonGenericInterruptParser,
     598    ARRAY_SIZE (CmArchCommonGenericInterruptParser) },
     599};
     600
     601/** A parser for EArchCommonObjPccSubspaceType2Info.
     602*/
     603STATIC CONST CM_OBJ_PARSER  CmArchCommonPccSubspaceType2InfoParser[] = {
    618604  { "GenericPccInfo", sizeof (PCC_SUBSPACE_GENERIC_INFO),
    619     NULL, NULL, CmArmPccSubspaceType0InfoParser,
    620     ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },
    621   { "PlatIrq",        sizeof (CM_ARM_GENERIC_INTERRUPT), NULL,NULL,
    622     CmArmGenericInterruptParser, ARRAY_SIZE (CmArmGenericInterruptParser) },
     605    NULL, NULL, CmArchCommonPccSubspaceType0InfoParser,
     606    ARRAY_SIZE (CmArchCommonPccSubspaceType0InfoParser) },
     607  { "PlatIrq",        sizeof (CM_ARCH_COMMON_GENERIC_INTERRUPT),NULL,NULL,
     608    CmArchCommonGenericInterruptParser, ARRAY_SIZE (CmArchCommonGenericInterruptParser) },
    623609  { "PlatIrqAckReg",  sizeof (PCC_MAILBOX_REGISTER_INFO),
    624610    NULL, NULL, CmArmMailboxRegisterInfoParser,
     
    626612};
    627613
    628 /** A parser for EArmObjPccSubspaceType3Info or EArmObjPccSubspaceType4Info.
    629 */
    630 STATIC CONST CM_OBJ_PARSER  CmArmPccSubspaceType34InfoParser[] = {
     614/** A parser for EArchCommonObjPccSubspaceType3Info or EArchCommonObjPccSubspaceType4Info.
     615*/
     616STATIC CONST CM_OBJ_PARSER  CmArchCommonPccSubspaceType34InfoParser[] = {
    631617  { "GenericPccInfo",       sizeof (PCC_SUBSPACE_GENERIC_INFO),
    632     NULL, NULL, CmArmPccSubspaceType0InfoParser,
    633     ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },
    634   { "PlatIrq",              sizeof (CM_ARM_GENERIC_INTERRUPT), NULL,NULL,
    635     CmArmGenericInterruptParser, ARRAY_SIZE (CmArmGenericInterruptParser) },
     618    NULL, NULL, CmArchCommonPccSubspaceType0InfoParser,
     619    ARRAY_SIZE (CmArchCommonPccSubspaceType0InfoParser) },
     620  { "PlatIrq",              sizeof (CM_ARCH_COMMON_GENERIC_INTERRUPT),NULL,NULL,
     621    CmArchCommonGenericInterruptParser, ARRAY_SIZE (CmArchCommonGenericInterruptParser) },
    636622  { "PlatIrqAckReg",        sizeof (PCC_MAILBOX_REGISTER_INFO),
    637623    NULL, NULL, CmArmMailboxRegisterInfoParser,
     
    648634};
    649635
    650 /** A parser for EArmObjPccSubspaceType5Info.
    651 */
    652 STATIC CONST CM_OBJ_PARSER  CmArmPccSubspaceType5InfoParser[] = {
     636/** A parser for EArchCommonObjPccSubspaceType5Info.
     637*/
     638STATIC CONST CM_OBJ_PARSER  CmArchCommonPccSubspaceType5InfoParser[] = {
    653639  { "GenericPccInfo",      sizeof (PCC_SUBSPACE_GENERIC_INFO),
    654     NULL, NULL, CmArmPccSubspaceType0InfoParser,
    655     ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },
    656   { "Version",             2,                                 "0x%x",NULL },
    657   { "PlatIrq",             sizeof (CM_ARM_GENERIC_INTERRUPT), NULL,  NULL,
    658     CmArmGenericInterruptParser, ARRAY_SIZE (CmArmGenericInterruptParser) },
     640    NULL, NULL, CmArchCommonPccSubspaceType0InfoParser,
     641    ARRAY_SIZE (CmArchCommonPccSubspaceType0InfoParser) },
     642  { "Version",             2,                                        "0x%x",NULL },
     643  { "PlatIrq",             sizeof (CM_ARCH_COMMON_GENERIC_INTERRUPT),NULL,  NULL,
     644    CmArchCommonGenericInterruptParser, ARRAY_SIZE (CmArchCommonGenericInterruptParser) },
    659645  { "CmdCompleteCheckReg", sizeof (PCC_MAILBOX_REGISTER_INFO),
    660646    NULL, NULL, CmArmMailboxRegisterInfoParser,
     
    671657};
    672658
    673 /** A parser for EArmObjPsdInfo.
    674 */
    675 STATIC CONST CM_OBJ_PARSER  CmArmPsdInfoParser[] = {
     659/** A parser for EArchCommonObjPsdInfo.
     660*/
     661STATIC CONST CM_OBJ_PARSER  CmArchCommonPsdInfoParser[] = {
    676662  { "Revision",  1, "0x%x", NULL },
    677663  { "DomainId",  4, "0x%x", NULL },
     
    680666};
    681667
     668/** A parser for EArchCommonObjTpm2InterfaceInfo.
     669*/
     670STATIC CONST CM_OBJ_PARSER  CmArchCommonTpm2InterfaceInfo[] = {
     671  { "PlatformClass",             sizeof (UINT16),                                               "0x%x",   NULL    },
     672  { "AddressOfControlArea",      sizeof (UINT64),                                               "0x%llx", NULL    },
     673  { "StartMethod",               sizeof (UINT32),                                               "0x%x",   NULL    },
     674  { "StartMethodParametersSize", sizeof (UINT8),                                                "0x%x",   NULL    },
     675  { "StartMethodParameters",     EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE, NULL,     HexDump },
     676  { "Laml",                      sizeof (UINT32),                                               "0x%x",   NULL    },
     677  { "Lasa",                      sizeof (UINT64),                                               "0x%llx", NULL    },
     678};
     679
     680/** A parser for EArchCommonObjSpmiInfo.
     681*/
     682STATIC CONST CM_OBJ_PARSER  CmArchCommonSpmiInterfaceInfoParser[] = {
     683  { "InterfaceType", sizeof (UINT8),                                  "0x%x", NULL },
     684  { "BaseAddress",   sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     685    NULL, NULL, AcpiGenericAddressParser, ARRAY_SIZE (AcpiGenericAddressParser) },
     686};
     687
     688/** A parser for EArchCommonObjSpmiInterruptDeviceInfo.
     689*/
     690STATIC CONST CM_OBJ_PARSER  CmArchCommonSpmiInterruptDeviceInfoParser[] = {
     691  { "InterruptType",         sizeof (UINT8),  "0x%x", NULL },
     692  { "GPE",                   sizeof (UINT8),  "0x%x", NULL },
     693  { "PciDeviceFlag",         sizeof (UINT8),  "0x%x", NULL },
     694  { "GlobalSystemInterrupt", sizeof (UINT32), "0x%x", NULL },
     695  { "DeviceId",              sizeof (UINT32), "0x%x", NULL }
     696};
     697
     698/** A parser for Arch Common namespace objects.
     699*/
     700STATIC CONST CM_OBJ_PARSER_ARRAY  ArchCommonNamespaceObjectParser[] = {
     701  CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjReserved),
     702  CM_PARSER_ADD_OBJECT (EArchCommonObjPowerManagementProfileInfo,  CmArchCommonPowerManagementProfileInfoParser),
     703  CM_PARSER_ADD_OBJECT (EArchCommonObjSerialPortInfo,              CmArchCommonSerialPortInfoParser),
     704  CM_PARSER_ADD_OBJECT (EArchCommonObjConsolePortInfo,             CmArchCommonSerialPortInfoParser),
     705  CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo,         CmArchCommonSerialPortInfoParser),
     706  CM_PARSER_ADD_OBJECT (EArchCommonObjHypervisorVendorIdentity,    CmArchCommonHypervisorVendorIdentityParser),
     707  CM_PARSER_ADD_OBJECT (EArchCommonObjFixedFeatureFlags,           CmArchCommonFixedFeatureFlagsParser),
     708  CM_PARSER_ADD_OBJECT (EArchCommonObjCmRef,                       CmArchCommonObjRefParser),
     709  CM_PARSER_ADD_OBJECT (EArchCommonObjPciConfigSpaceInfo,          CmArchCommonPciConfigSpaceInfoParser),
     710  CM_PARSER_ADD_OBJECT (EArchCommonObjPciAddressMapInfo,           CmArchCommonPciAddressMapInfoParser),
     711  CM_PARSER_ADD_OBJECT (EArchCommonObjPciInterruptMapInfo,         CmArchCommonPciInterruptMapInfoParser),
     712  CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryAffinityInfo,          CmArchCommonMemoryAffinityInfoParser),
     713  CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandleAcpi,            CmArchCommonDeviceHandleAcpiParser),
     714  CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandlePci,             CmArchCommonDeviceHandlePciParser),
     715  CM_PARSER_ADD_OBJECT (EArchCommonObjGenericInitiatorAffinityInfo,CmArchCommonGenericInitiatorAffinityInfoParser),
     716  CM_PARSER_ADD_OBJECT (EArchCommonObjLpiInfo,                     CmArchCommonLpiInfoParser),
     717  CM_PARSER_ADD_OBJECT (EArchCommonObjProcHierarchyInfo,           CmArchCommonProcHierarchyInfoParser),
     718  CM_PARSER_ADD_OBJECT (EArchCommonObjCacheInfo,                   CmArchCommonCacheInfoParser),
     719  CM_PARSER_ADD_OBJECT (EArchCommonObjCpcInfo,                     CmArchCommonCpcInfoParser),
     720  CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType0Info,        CmArchCommonPccSubspaceType0InfoParser),
     721  CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType1Info,        CmArchCommonPccSubspaceType1InfoParser),
     722  CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType2Info,        CmArchCommonPccSubspaceType2InfoParser),
     723  CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType3Info,        CmArchCommonPccSubspaceType34InfoParser),
     724  CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType4Info,        CmArchCommonPccSubspaceType34InfoParser),
     725  CM_PARSER_ADD_OBJECT (EArchCommonObjPccSubspaceType5Info,        CmArchCommonPccSubspaceType5InfoParser),
     726  CM_PARSER_ADD_OBJECT (EArchCommonObjPsdInfo,                     CmArchCommonPsdInfoParser),
     727  CM_PARSER_ADD_OBJECT (EArchCommonObjTpm2InterfaceInfo,           CmArchCommonTpm2InterfaceInfo),
     728  CM_PARSER_ADD_OBJECT (EArchCommonObjSpmiInterfaceInfo,           CmArchCommonSpmiInterfaceInfoParser),
     729  CM_PARSER_ADD_OBJECT (EArchCommonObjSpmiInterruptDeviceInfo,     CmArchCommonSpmiInterruptDeviceInfoParser),
     730  CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)
     731};
     732
    682733/** A parser for Arm namespace objects.
    683734*/
    684735STATIC CONST CM_OBJ_PARSER_ARRAY  ArmNamespaceObjectParser[] = {
    685   { "EArmObjReserved",                     NULL,                                  0                                },
    686   { "EArmObjBootArchInfo",                 CmArmBootArchInfoParser,
    687     ARRAY_SIZE (CmArmBootArchInfoParser) },
    688   { "EArmObjCpuInfo",                      NULL,                                  0                                },
    689   { "EArmObjPowerManagementProfileInfo",   CmArmPowerManagementProfileInfoParser,
    690     ARRAY_SIZE (CmArmPowerManagementProfileInfoParser) },
    691   { "EArmObjGicCInfo",                     CmArmGicCInfoParser,                   ARRAY_SIZE (CmArmGicCInfoParser) },
    692   { "EArmObjGicDInfo",                     CmArmGicDInfoParser,                   ARRAY_SIZE (CmArmGicDInfoParser) },
    693   { "EArmObjGicMsiFrameInfo",              CmArmGicMsiFrameInfoParser,
    694     ARRAY_SIZE (CmArmGicMsiFrameInfoParser) },
    695   { "EArmObjGicRedistributorInfo",         CmArmGicRedistInfoParser,
    696     ARRAY_SIZE (CmArmGicRedistInfoParser) },
    697   { "EArmObjGicItsInfo",                   CmArmGicItsInfoParser,
    698     ARRAY_SIZE (CmArmGicItsInfoParser) },
    699   { "EArmObjSerialConsolePortInfo",        CmArmSerialPortInfoParser,
    700     ARRAY_SIZE (CmArmSerialPortInfoParser) },
    701   { "EArmObjSerialDebugPortInfo",          CmArmSerialPortInfoParser,
    702     ARRAY_SIZE (CmArmSerialPortInfoParser) },
    703   { "EArmObjGenericTimerInfo",             CmArmGenericTimerInfoParser,
    704     ARRAY_SIZE (CmArmGenericTimerInfoParser) },
    705   { "EArmObjPlatformGTBlockInfo",          CmArmGTBlockInfoParser,
    706     ARRAY_SIZE (CmArmGTBlockInfoParser) },
    707   { "EArmObjGTBlockTimerFrameInfo",        CmArmGTBlockTimerFrameInfoParser,
    708     ARRAY_SIZE (CmArmGTBlockTimerFrameInfoParser) },
    709   { "EArmObjPlatformGenericWatchdogInfo",  CmArmGenericWatchdogInfoParser,
    710     ARRAY_SIZE (CmArmGenericWatchdogInfoParser) },
    711   { "EArmObjPciConfigSpaceInfo",           CmArmPciConfigSpaceInfoParser,
    712     ARRAY_SIZE (CmArmPciConfigSpaceInfoParser) },
    713   { "EArmObjHypervisorVendorIdentity",     CmArmHypervisorVendorIdParser,
    714     ARRAY_SIZE (CmArmHypervisorVendorIdParser) },
    715   { "EArmObjFixedFeatureFlags",            CmArmFixedFeatureFlagsParser,
    716     ARRAY_SIZE (CmArmFixedFeatureFlagsParser) },
    717   { "EArmObjItsGroup",                     CmArmItsGroupNodeParser,
    718     ARRAY_SIZE (CmArmItsGroupNodeParser) },
    719   { "EArmObjNamedComponent",               CmArmNamedComponentNodeParser,
    720     ARRAY_SIZE (CmArmNamedComponentNodeParser) },
    721   { "EArmObjRootComplex",                  CmArmRootComplexNodeParser,
    722     ARRAY_SIZE (CmArmRootComplexNodeParser) },
    723   { "EArmObjSmmuV1SmmuV2",                 CmArmSmmuV1SmmuV2NodeParser,
    724     ARRAY_SIZE (CmArmSmmuV1SmmuV2NodeParser) },
    725   { "EArmObjSmmuV3",                       CmArmSmmuV3NodeParser,
    726     ARRAY_SIZE (CmArmSmmuV3NodeParser) },
    727   { "EArmObjPmcg",                         CmArmPmcgNodeParser,                   ARRAY_SIZE (CmArmPmcgNodeParser) },
    728   { "EArmObjGicItsIdentifierArray",        CmArmGicItsIdentifierParser,
    729     ARRAY_SIZE (CmArmGicItsIdentifierParser) },
    730   { "EArmObjIdMappingArray",               CmArmIdMappingParser,
    731     ARRAY_SIZE (CmArmIdMappingParser) },
    732   { "EArmObjSmmuInterruptArray",           CmArmGenericInterruptParser,
    733     ARRAY_SIZE (CmArmGenericInterruptParser) },
    734   { "EArmObjProcHierarchyInfo",            CmArmProcHierarchyInfoParser,
    735     ARRAY_SIZE (CmArmProcHierarchyInfoParser) },
    736   { "EArmObjCacheInfo",                    CmArmCacheInfoParser,
    737     ARRAY_SIZE (CmArmCacheInfoParser) },
    738   { "EArmObjProcNodeIdInfo",               CmArmProcNodeIdInfoParser,
    739     ARRAY_SIZE (CmArmProcNodeIdInfoParser) },
    740   { "EArmObjCmRef",                        CmArmObjRefParser,                     ARRAY_SIZE (CmArmObjRefParser)   },
    741   { "EArmObjMemoryAffinityInfo",           CmArmMemoryAffinityInfoParser,
    742     ARRAY_SIZE (CmArmMemoryAffinityInfoParser) },
    743   { "EArmObjDeviceHandleAcpi",             CmArmDeviceHandleAcpiParser,
    744     ARRAY_SIZE (CmArmDeviceHandleAcpiParser) },
    745   { "EArmObjDeviceHandlePci",              CmArmDeviceHandlePciParser,
    746     ARRAY_SIZE (CmArmDeviceHandlePciParser) },
    747   { "EArmObjGenericInitiatorAffinityInfo",
    748     CmArmGenericInitiatorAffinityInfoParser,
    749     ARRAY_SIZE (CmArmGenericInitiatorAffinityInfoParser) },
    750   { "EArmObjSerialPortInfo",               CmArmSerialPortInfoParser,
    751     ARRAY_SIZE (CmArmSerialPortInfoParser) },
    752   { "EArmObjCmn600Info",                   CmArmCmn600InfoParser,
    753     ARRAY_SIZE (CmArmCmn600InfoParser) },
    754   { "EArmObjLpiInfo",                      CmArmLpiInfoParser,
    755     ARRAY_SIZE (CmArmLpiInfoParser) },
    756   { "EArmObjPciAddressMapInfo",            CmArmPciAddressMapInfoParser,
    757     ARRAY_SIZE (CmArmPciAddressMapInfoParser) },
    758   { "EArmObjPciInterruptMapInfo",          CmPciInterruptMapInfoParser,
    759     ARRAY_SIZE (CmPciInterruptMapInfoParser) },
    760   { "EArmObjRmr",                          CmArmRmrInfoParser,
    761     ARRAY_SIZE (CmArmRmrInfoParser) },
    762   { "EArmObjMemoryRangeDescriptor",        CmArmMemoryRangeDescriptorInfoParser,
    763     ARRAY_SIZE (CmArmMemoryRangeDescriptorInfoParser) },
    764   { "EArmObjCpcInfo",                      CmArmCpcInfoParser,
    765     ARRAY_SIZE (CmArmCpcInfoParser) },
    766   { "EArmObjPccSubspaceType0Info",         CmArmPccSubspaceType0InfoParser,
    767     ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },
    768   { "EArmObjPccSubspaceType1Info",         CmArmPccSubspaceType1InfoParser,
    769     ARRAY_SIZE (CmArmPccSubspaceType1InfoParser) },
    770   { "EArmObjPccSubspaceType2Info",         CmArmPccSubspaceType2InfoParser,
    771     ARRAY_SIZE (CmArmPccSubspaceType2InfoParser) },
    772   { "EArmObjPccSubspaceType3Info",         CmArmPccSubspaceType34InfoParser,
    773     ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },
    774   { "EArmObjPccSubspaceType4Info",         CmArmPccSubspaceType34InfoParser,
    775     ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },
    776   { "EArmObjPccSubspaceType5Info",         CmArmPccSubspaceType5InfoParser,
    777     ARRAY_SIZE (CmArmPccSubspaceType5InfoParser) },
    778   { "EArmObjEtInfo",                       CmArmEtInfo,
    779     ARRAY_SIZE (CmArmEtInfo) },
    780   { "EArmObjPsdInfo",                      CmArmPsdInfoParser,
    781     ARRAY_SIZE (CmArmPsdInfoParser) },
    782   { "EArmObjMax",                          NULL,                                  0                                },
     736  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved),
     737  CM_PARSER_ADD_OBJECT (EArmObjBootArchInfo,               CmArmBootArchInfoParser),
     738  CM_PARSER_ADD_OBJECT (EArmObjGicCInfo,                   CmArmGicCInfoParser),
     739  CM_PARSER_ADD_OBJECT (EArmObjGicDInfo,                   CmArmGicDInfoParser),
     740  CM_PARSER_ADD_OBJECT (EArmObjGicMsiFrameInfo,            CmArmGicMsiFrameInfoParser),
     741  CM_PARSER_ADD_OBJECT (EArmObjGicRedistributorInfo,       CmArmGicRedistInfoParser),
     742  CM_PARSER_ADD_OBJECT (EArmObjGicItsInfo,                 CmArmGicItsInfoParser),
     743  CM_PARSER_ADD_OBJECT (EArmObjGenericTimerInfo,           CmArmGenericTimerInfoParser),
     744  CM_PARSER_ADD_OBJECT (EArmObjPlatformGTBlockInfo,        CmArmGTBlockInfoParser),
     745  CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo,      CmArmGTBlockTimerFrameInfoParser),
     746  CM_PARSER_ADD_OBJECT (EArmObjPlatformGenericWatchdogInfo,CmArmGenericWatchdogInfoParser),
     747  CM_PARSER_ADD_OBJECT (EArmObjItsGroup,                   CmArmItsGroupNodeParser),
     748  CM_PARSER_ADD_OBJECT (EArmObjNamedComponent,             CmArmNamedComponentNodeParser),
     749  CM_PARSER_ADD_OBJECT (EArmObjRootComplex,                CmArmRootComplexNodeParser),
     750  CM_PARSER_ADD_OBJECT (EArmObjSmmuV1SmmuV2,               CmArmSmmuV1SmmuV2NodeParser),
     751  CM_PARSER_ADD_OBJECT (EArmObjSmmuV3,                     CmArmSmmuV3NodeParser),
     752  CM_PARSER_ADD_OBJECT (EArmObjPmcg,                       CmArmPmcgNodeParser),
     753  CM_PARSER_ADD_OBJECT (EArmObjGicItsIdentifierArray,      CmArmGicItsIdentifierParser),
     754  CM_PARSER_ADD_OBJECT (EArmObjIdMappingArray,             CmArmIdMappingParser),
     755  CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray,         CmArchCommonGenericInterruptParser),
     756  CM_PARSER_ADD_OBJECT (EArmObjCmn600Info,                 CmArmCmn600InfoParser),
     757  CM_PARSER_ADD_OBJECT (EArmObjRmr,                        CmArmRmrInfoParser),
     758  CM_PARSER_ADD_OBJECT (EArmObjMemoryRangeDescriptor,      CmArmMemoryRangeDescriptorInfoParser),
     759  CM_PARSER_ADD_OBJECT (EArmObjEtInfo,                     CmArmEtInfo),
     760  CM_PARSER_ADD_OBJECT_RESERVED (EArmObjMax)
     761};
     762
     763/** A parser for EX64ObjFadtSciInterrupt.
     764*/
     765STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtSciInterruptParser[] = {
     766  { "SciInterrupt", 2, "0x%x", NULL }
     767};
     768
     769/** A parser for EX64ObjFadtSciCmdInfo.
     770*/
     771STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtSciCmdInfoParser[] = {
     772  { "SciCmd",      4, "0x%x", NULL },
     773  { "AcpiEnable",  1, "0x%x", NULL },
     774  { "AcpiDisable", 1, "0x%x", NULL },
     775  { "S4BiosReq",   1, "0x%x", NULL },
     776  { "PstateCnt",   1, "0x%x", NULL },
     777  { "CstCnt",      1, "0x%x", NULL }
     778};
     779
     780/** A parser for EX64ObjFadtPmBlockInfo.
     781*/
     782STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtPmBlockInfoParser[] = {
     783  { "Pm1aEvtBlk", 4, "0x%x", NULL },
     784  { "Pm1bEvtBlk", 4, "0x%x", NULL },
     785  { "Pm1aCntBlk", 4, "0x%x", NULL },
     786  { "Pm1bCntBlk", 4, "0x%x", NULL },
     787  { "Pm2CntBlk",  4, "0x%x", NULL },
     788  { "PmTmrBlk",   4, "0x%x", NULL },
     789  { "Pm1EvtLen",  1, "0x%x", NULL },
     790  { "Pm1CntLen",  1, "0x%x", NULL },
     791  { "Pm2CntLen",  1, "0x%x", NULL },
     792  { "PmTmrLen",   1, "0x%x", NULL }
     793};
     794
     795/** A parser for EX64ObjFadtGpeBlockInfo.
     796*/
     797STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtGpeBlockInfoParser[] = {
     798  { "Gpe0Blk",    4, "0x%x", NULL },
     799  { "Gpe1Blk",    4, "0x%x", NULL },
     800  { "Gpe0BlkLen", 1, "0x%x", NULL },
     801  { "Gpe1BlkLen", 1, "0x%x", NULL },
     802  { "Gpe1Base",   1, "0x%x", NULL }
     803};
     804
     805/** A parser for EX64ObjFadtXpmBlockInfo.
     806*/
     807STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtXpmBlockInfoParser[] = {
     808  { "XPm1aEvtBlk", sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     809    NULL, NULL, AcpiGenericAddressParser,
     810    ARRAY_SIZE (AcpiGenericAddressParser) },
     811  { "XPm1bEvtBlk", sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     812    NULL, NULL, AcpiGenericAddressParser,
     813    ARRAY_SIZE (AcpiGenericAddressParser) },
     814  { "XPm1aCntBlk", sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     815    NULL, NULL, AcpiGenericAddressParser,
     816    ARRAY_SIZE (AcpiGenericAddressParser) },
     817  { "XPm1bCntBlk", sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     818    NULL, NULL, AcpiGenericAddressParser,
     819    ARRAY_SIZE (AcpiGenericAddressParser) },
     820  { "XPm2CntBlk",  sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     821    NULL, NULL, AcpiGenericAddressParser,
     822    ARRAY_SIZE (AcpiGenericAddressParser) },
     823  { "XPmTmrBlk",   sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     824    NULL, NULL, AcpiGenericAddressParser,
     825    ARRAY_SIZE (AcpiGenericAddressParser) }
     826};
     827
     828/** A parser for EX64ObjFadtXgpeBlockInfo.
     829*/
     830STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtXgpeBlockInfoParser[] = {
     831  { "XGpe0Blk", sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     832    NULL, NULL, AcpiGenericAddressParser,
     833    ARRAY_SIZE (AcpiGenericAddressParser) },
     834  { "XGpe1Blk", sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     835    NULL, NULL, AcpiGenericAddressParser,
     836    ARRAY_SIZE (AcpiGenericAddressParser) }
     837};
     838
     839/** A parser for EX64ObjFadtSleepBlockInfo.
     840*/
     841STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtSleepBlockInfoParser[] = {
     842  { "SleepControlReg", sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     843    NULL, NULL, AcpiGenericAddressParser,
     844    ARRAY_SIZE (AcpiGenericAddressParser) },
     845  { "SleepStatusReg",  sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     846    NULL, NULL, AcpiGenericAddressParser,
     847    ARRAY_SIZE (AcpiGenericAddressParser) }
     848};
     849
     850/** A parser for EX64ObjFadtResetBlockInfo.
     851*/
     852STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtResetBlockInfoParser[] = {
     853  { "ResetReg",   sizeof (EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE),
     854    NULL, NULL, AcpiGenericAddressParser,
     855    ARRAY_SIZE (AcpiGenericAddressParser) },
     856  { "ResetValue", 1,                                              "0x%x",NULL }
     857};
     858
     859/** A parser for EX64ObjFadtMiscInfo.
     860*/
     861STATIC CONST CM_OBJ_PARSER  CmX64ObjFadtMiscInfoParser[] = {
     862  { "PLvl2Lat",    2, "0x%x", NULL },
     863  { "PLvl3Lat",    2, "0x%x", NULL },
     864  { "FlushSize",   2, "0x%x", NULL },
     865  { "FlushStride", 2, "0x%x", NULL },
     866  { "DutyOffset",  1, "0x%x", NULL },
     867  { "DutyWidth",   1, "0x%x", NULL },
     868  { "DayAlrm",     1, "0x%x", NULL },
     869  { "MonAlrm",     1, "0x%x", NULL },
     870  { "Century",     1, "0x%x", NULL }
     871};
     872
     873/** A parser for EX64ObjWsmtFlagsInfo.
     874*/
     875STATIC CONST CM_OBJ_PARSER  CmX64ObjWsmtFlagsInfoParser[] = {
     876  { "WsmtFlags", 4, "0x%x", NULL }
     877};
     878
     879/** A parser for EX64ObjHpetInfo.
     880*/
     881STATIC CONST CM_OBJ_PARSER  CmX64ObjHpetInfoParser[] = {
     882  { "BaseAddressLower32Bit",                     4, "0x%x", NULL },
     883  { "MainCounterMinimumClockTickInPeriodicMode", 2, "0x%x", NULL },
     884  { "PageProtectionAndOemAttribute",             1, "0x%x", NULL }
     885};
     886
     887/** A parser for EX64ObjMadtInfo.
     888*/
     889STATIC CONST CM_OBJ_PARSER  CmX64ObjMadtInfoParser[] = {
     890  { "LocalApicAddress", 4,                        "0x%x", NULL },
     891  { "Flags",            4,                        "0x%x", NULL },
     892  { "ApicMode",         sizeof (LOCAL_APIC_MODE), "0x%x", NULL }
     893};
     894
     895/** A parser for CmArchCommonLocalApicX2ApicInfoParser.
     896*/
     897STATIC CONST CM_OBJ_PARSER  CmX64ObjLocalApicX2ApicInfoParser[] = {
     898  { "ApicId",           4, "0x%x", NULL },
     899  { "Flags",            4, "0x%x", NULL },
     900  { "AcpiProcessorUid", 4, "0x%x", NULL }
     901};
     902
     903/** A parser for CmX64IoApicInfoParser.
     904*/
     905STATIC CONST CM_OBJ_PARSER  CmX64IoApicInfoParser[] = {
     906  { "IoApicId",                  1, "0x%x", NULL },
     907  { "IoApicAddress",             4, "0x%x", NULL },
     908  { "GlobalSystemInterruptBase", 4, "0x%x", NULL }
     909};
     910
     911/** A parser for CmX64IntrSourceOverrideInfoParser.
     912*/
     913STATIC CONST CM_OBJ_PARSER  CmX64IntrSourceOverrideInfoParser[] = {
     914  { "Bus",                   1, "0x%x", NULL },
     915  { "Source",                1, "0x%x", NULL },
     916  { "GlobalSystemInterrupt", 4, "0x%x", NULL },
     917  { "Flags",                 2, "0x%x", NULL }
     918};
     919
     920/** A parser for CmX64LocalApicNmiInfo.
     921*/
     922STATIC CONST CM_OBJ_PARSER  CmX64LocalApicNmiInfo[] = {
     923  { "Flags",            2, "0x%x", NULL },
     924  { "AcpiProcessorUid", 4, "0x%x", NULL },
     925  { "LocalApicLint",    1, "0x%x", NULL }
     926};
     927
     928/** A parser for EX64ObjFacsInfo.
     929*/
     930STATIC CONST CM_OBJ_PARSER  CmX64ObjFacsInfoParser[] = {
     931  { "FirmwareWakingVector",  4, "0x%x",   NULL },
     932  { "Flags",                 4, "0x%x",   NULL },
     933  { "XFirmwareWakingVector", 8, "0x%llx", NULL },
     934  { "OspmFlags",             4, "0x%x",   NULL }
     935};
     936
     937/** A parser for CmX64LocalApicX2ApicAffinityInfo.
     938*/
     939STATIC CONST CM_OBJ_PARSER  CmX64LocalApicX2ApicAffinityInfo[] = {
     940  { "ApicMode",        sizeof (LOCAL_APIC_MODE), "0x%x", NULL },
     941  { "ApicId",          4,                        "0x%x", NULL },
     942  { "ProximityDomain", 4,                        "0x%x", NULL },
     943  { "Flags",           4,                        "0x%x", NULL },
     944  { "ClockDomain",     4,                        "0x%x", NULL }
     945};
     946
     947/** A parser for X64 namespace objects.
     948*/
     949STATIC CONST CM_OBJ_PARSER_ARRAY  X64NamespaceObjectParser[] = {
     950  CM_PARSER_ADD_OBJECT_RESERVED (EX64ObjReserved),
     951  CM_PARSER_ADD_OBJECT (EX64ObjFadtSciInterrupt,           CmX64ObjFadtSciInterruptParser),
     952  CM_PARSER_ADD_OBJECT (EX64ObjFadtSciCmdInfo,             CmX64ObjFadtSciCmdInfoParser),
     953  CM_PARSER_ADD_OBJECT (EX64ObjFadtPmBlockInfo,            CmX64ObjFadtPmBlockInfoParser),
     954  CM_PARSER_ADD_OBJECT (EX64ObjFadtGpeBlockInfo,           CmX64ObjFadtGpeBlockInfoParser),
     955  CM_PARSER_ADD_OBJECT (EX64ObjFadtXpmBlockInfo,           CmX64ObjFadtXpmBlockInfoParser),
     956  CM_PARSER_ADD_OBJECT (EX64ObjFadtXgpeBlockInfo,          CmX64ObjFadtXgpeBlockInfoParser),
     957  CM_PARSER_ADD_OBJECT (EX64ObjFadtSleepBlockInfo,         CmX64ObjFadtSleepBlockInfoParser),
     958  CM_PARSER_ADD_OBJECT (EX64ObjFadtResetBlockInfo,         CmX64ObjFadtResetBlockInfoParser),
     959  CM_PARSER_ADD_OBJECT (EX64ObjFadtMiscInfo,               CmX64ObjFadtMiscInfoParser),
     960  CM_PARSER_ADD_OBJECT (EX64ObjWsmtFlagsInfo,              CmX64ObjWsmtFlagsInfoParser),
     961  CM_PARSER_ADD_OBJECT (EX64ObjHpetInfo,                   CmX64ObjHpetInfoParser),
     962  CM_PARSER_ADD_OBJECT (EX64ObjMadtInfo,                   CmX64ObjMadtInfoParser),
     963  CM_PARSER_ADD_OBJECT (EX64ObjLocalApicX2ApicInfo,        CmX64ObjLocalApicX2ApicInfoParser),
     964  CM_PARSER_ADD_OBJECT (EX64ObjIoApicInfo,                 CmX64IoApicInfoParser),
     965  CM_PARSER_ADD_OBJECT (EX64ObjIntrSourceOverrideInfo,     CmX64IntrSourceOverrideInfoParser),
     966  CM_PARSER_ADD_OBJECT (EX64ObjLocalApicX2ApicNmiInfo,     CmX64LocalApicNmiInfo),
     967  CM_PARSER_ADD_OBJECT (EX64ObjFacsInfo,                   CmX64ObjFacsInfoParser),
     968  CM_PARSER_ADD_OBJECT (EX64ObjLocalApicX2ApicAffinityInfo,CmX64LocalApicX2ApicAffinityInfo),
     969  CM_PARSER_ADD_OBJECT_RESERVED (EX64ObjMax)
    783970};
    784971
     
    786973*/
    787974STATIC CONST CM_OBJ_PARSER  StdObjCfgMgrInfoParser[] = {
    788   { "Revision", 4, "0x%x",         NULL       },
    789   { "OemId[6]", 6, "%c%c%c%c%c%c", PrintChar6 }
     975  { "Revision", 4, "0x%x", NULL       },
     976  { "OemId[6]", 6, NULL,   PrintChars }
    790977};
    791978
     
    793980*/
    794981STATIC CONST CM_OBJ_PARSER  StdObjAcpiTableInfoParser[] = {
    795   { "AcpiTableSignature", 4,                                      "%c%c%c%c",         PrintChar4 },
    796   { "AcpiTableRevision",  1,                                      "%d",               NULL       },
    797   { "TableGeneratorId",   sizeof (ACPI_TABLE_GENERATOR_ID),       "0x%x",             NULL       },
    798   { "AcpiTableData",      sizeof (EFI_ACPI_DESCRIPTION_HEADER *), "0x%p",             NULL       },
    799   { "OemTableId",         8,                                      "%c%c%c%c%c%c%c%c", PrintChar8 },
    800   { "OemRevision",        4,                                      "0x%x",             NULL       },
    801   { "MinorRevision",      1,                                      "0x%x",             NULL       },
     982  { "AcpiTableSignature", 4,                                      NULL,   PrintChars },
     983  { "AcpiTableRevision",  1,                                      "%d",   NULL       },
     984  { "TableGeneratorId",   sizeof (ACPI_TABLE_GENERATOR_ID),       "0x%x", NULL       },
     985  { "AcpiTableData",      sizeof (EFI_ACPI_DESCRIPTION_HEADER *), "0x%p", NULL       },
     986  { "OemTableId",         8,                                      NULL,   PrintChars },
     987  { "OemRevision",        4,                                      "0x%x", NULL       },
     988  { "MinorRevision",      1,                                      "0x%x", NULL       },
    802989};
    803990
     
    812999*/
    8131000STATIC CONST CM_OBJ_PARSER_ARRAY  StdNamespaceObjectParser[] = {
    814   { "EStdObjCfgMgrInfo",      StdObjCfgMgrInfoParser,
    815     ARRAY_SIZE (StdObjCfgMgrInfoParser) },
    816   { "EStdObjAcpiTableList",   StdObjAcpiTableInfoParser,
    817     ARRAY_SIZE (StdObjAcpiTableInfoParser) },
    818   { "EStdObjSmbiosTableList", StdObjSmbiosTableInfoParser,
    819     ARRAY_SIZE (StdObjSmbiosTableInfoParser) },
    820   { "EStdObjMax",             NULL,                       0}
     1001  CM_PARSER_ADD_OBJECT (EStdObjCfgMgrInfo,      StdObjCfgMgrInfoParser),
     1002  CM_PARSER_ADD_OBJECT (EStdObjAcpiTableList,   StdObjAcpiTableInfoParser),
     1003  CM_PARSER_ADD_OBJECT (EStdObjSmbiosTableList, StdObjSmbiosTableInfoParser),
     1004  CM_PARSER_ADD_OBJECT_RESERVED (EStdObjMax)
    8211005};
    8221006
     
    8271011  @param [in]  Format  Format to print the Ptr.
    8281012  @param [in]  Ptr     Pointer to the string.
     1013  @param [in]  Length  Length of the field
    8291014**/
    8301015STATIC
     
    8331018PrintString (
    8341019  IN CONST CHAR8  *Format,
    835   IN UINT8        *Ptr
     1020  IN UINT8        *Ptr,
     1021  IN UINT32       Length
    8361022  )
    8371023{
     
    8411027  }
    8421028
    843   DEBUG ((DEBUG_ERROR, "%a", Ptr));
     1029  DEBUG ((DEBUG_INFO, "%a", Ptr));
    8441030}
    8451031
     
    8501036  @param [in]  Format      Format to print the string.
    8511037  @param [in]  Ptr         Pointer to the string pointer.
     1038  @param [in]  Length      Length of the field
    8521039**/
    8531040STATIC
     
    8561043PrintStringPtr (
    8571044  IN CONST CHAR8  *Format,
    858   IN UINT8        *Ptr
     1045  IN UINT8        *Ptr,
     1046  IN UINT32       Length
    8591047  )
    8601048{
     
    8721060  }
    8731061
    874   PrintString (Format, String);
     1062  PrintString (Format, String, Length);
    8751063}
    8761064
    877 /** Print 4 characters.
     1065/** Print characters.
    8781066
    8791067  @param [in]  Format  Format to print the Ptr.
    8801068  @param [in]  Ptr     Pointer to the characters.
     1069  @param [in]  Length  Length of the field
    8811070**/
    8821071STATIC
    8831072VOID
    8841073EFIAPI
    885 PrintChar4 (
     1074PrintChars (
    8861075  IN  CONST CHAR8  *Format,
    887   IN  UINT8        *Ptr
     1076  IN  UINT8        *Ptr,
     1077  IN  UINT32       Length
    8881078  )
    8891079{
    890   DEBUG ((
    891     DEBUG_ERROR,
    892     (Format != NULL) ? Format : "%c%c%c%c",
    893     Ptr[0],
    894     Ptr[1],
    895     Ptr[2],
    896     Ptr[3]
    897     ));
     1080  UINT32  Index;
     1081
     1082  for (Index = 0; Index < Length; Index++) {
     1083    DEBUG ((DEBUG_INFO, "%c", Ptr[Index]));
     1084  }
    8981085}
    8991086
    900 /** Print 6 characters.
     1087/** Dump data in Hex format
    9011088
    9021089  @param [in]  Format  Format to print the Ptr.
    903   @param [in]  Ptr     Pointer to the characters.
     1090  @param [in]  Ptr     Pointer to the string.
     1091  @param [in]  Length  Length of the field
    9041092**/
    9051093STATIC
    9061094VOID
    9071095EFIAPI
    908 PrintChar6 (
    909   IN  CONST CHAR8  *Format,
    910   IN  UINT8        *Ptr
     1096HexDump (
     1097  IN CONST CHAR8  *Format,
     1098  IN UINT8        *Ptr,
     1099  IN UINT32       Length
    9111100  )
    9121101{
    913   DEBUG ((
    914     DEBUG_ERROR,
    915     (Format != NULL) ? Format : "%c%c%c%c%c%c",
    916     Ptr[0],
    917     Ptr[1],
    918     Ptr[2],
    919     Ptr[3],
    920     Ptr[4],
    921     Ptr[5]
    922     ));
    923 }
    924 
    925 /** Print 8 characters.
    926 
    927   @param [in]  Format  Format to print the Ptr.
    928   @param [in]  Ptr     Pointer to the characters.
    929 **/
    930 STATIC
    931 VOID
    932 EFIAPI
    933 PrintChar8 (
    934   IN  CONST CHAR8  *Format,
    935   IN  UINT8        *Ptr
    936   )
    937 {
    938   DEBUG ((
    939     DEBUG_ERROR,
    940     (Format != NULL) ? Format : "%c%c%c%c%c%c%c%c",
    941     Ptr[0],
    942     Ptr[1],
    943     Ptr[2],
    944     Ptr[3],
    945     Ptr[4],
    946     Ptr[5],
    947     Ptr[6],
    948     Ptr[7]
    949     ));
     1102  UINT32  Index;
     1103
     1104  for (Index = 0; Index < Length; Index++) {
     1105    DEBUG ((DEBUG_INFO, "0x%02x ", *Ptr++));
     1106  }
    9501107}
    9511108
     
    9891146    if (*RemainingSize < 0) {
    9901147      DEBUG ((
    991         DEBUG_INFO,
     1148        DEBUG_ERROR,
    9921149        "\nERROR: %a: Buffer overrun\n",
    9931150        Parser[Index].NameStr
     
    10091166      ));
    10101167    if (Parser[Index].PrintFormatter != NULL) {
    1011       Parser[Index].PrintFormatter (Parser[Index].Format, Data);
     1168      Parser[Index].PrintFormatter (Parser[Index].Format, Data, Parser[Index].Length);
    10121169    } else if (Parser[Index].Format != NULL) {
    10131170      switch (Parser[Index].Length) {
     
    11121269      ParserArray = &ArmNamespaceObjectParser[ObjId];
    11131270      break;
     1271
     1272    case EObjNameSpaceArchCommon:
     1273      if (ObjId >= EArchCommonObjMax) {
     1274        ASSERT (0);
     1275        return;
     1276      }
     1277
     1278      if (ObjId >= ARRAY_SIZE (ArchCommonNamespaceObjectParser)) {
     1279        DEBUG ((DEBUG_ERROR, "ObjId 0x%x is missing from the ArchCommonNamespaceObjectParser array\n", ObjId));
     1280        ASSERT (0);
     1281        return;
     1282      }
     1283
     1284      ParserArray = &ArchCommonNamespaceObjectParser[ObjId];
     1285      break;
     1286
     1287    case EObjNameSpaceX64:
     1288      if (ObjId >= EX64ObjMax) {
     1289        ASSERT (0);
     1290        return;
     1291      }
     1292
     1293      if (ObjId >= ARRAY_SIZE (X64NamespaceObjectParser)) {
     1294        DEBUG ((DEBUG_ERROR, "ObjId 0x%x is missing from the X64NamespaceObjectParser array\n", ObjId));
     1295        ASSERT (0);
     1296        return;
     1297      }
     1298
     1299      ParserArray = &X64NamespaceObjectParser[ObjId];
     1300      break;
     1301
    11141302    default:
    11151303      // Not supported
     
    11321320      ObjectCount
    11331321      ));
     1322
     1323    ASSERT (ObjId == ParserArray->ObjectId);
     1324
    11341325    if (ParserArray->Parser == NULL) {
    11351326      DEBUG ((DEBUG_ERROR, "Parser not implemented\n"));
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette