From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=zhichao.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 298F1211B6C26 for ; Sun, 27 Jan 2019 06:33:07 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Jan 2019 06:33:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,530,1539673200"; d="scan'208";a="110168648" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga007.jf.intel.com with ESMTP; 27 Jan 2019 06:33:06 -0800 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 27 Jan 2019 06:33:05 -0800 Received: from shsmsx154.ccr.corp.intel.com (10.239.6.54) by fmsmsx115.amr.corp.intel.com (10.18.116.19) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 27 Jan 2019 06:33:05 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.110]) by SHSMSX154.ccr.corp.intel.com ([169.254.7.232]) with mapi id 14.03.0415.000; Sun, 27 Jan 2019 22:33:03 +0800 From: "Gao, Zhichao" To: Krzysztof Koch , "edk2-devel@lists.01.org" CC: "Gao, Liming" Thread-Topic: [edk2] [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add support for PPTT Thread-Index: AQHUswyqG2vDnCWm3kCIsmp4QPYegqXDLxmQ Date: Sun, 27 Jan 2019 14:33:03 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B799802@SHSMSX101.ccr.corp.intel.com> References: <20190123105811.4040-1-krzysztof.koch@arm.com> In-Reply-To: <20190123105811.4040-1-krzysztof.koch@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjIwYzhlMzktZTMyZi00ZmE0LThhZmItODVhNTU3ZTEwYTE4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVWw3S0ZGeFYxU2lRSDB2QmUyaEtuU1cxTTVrWWxcL05jVDFlUjdkZDJSVmFGeTM4QmNqOFcxalR4cFROYTJLUDAifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add support for PPTT X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jan 2019 14:33:07 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable The function ValidateCacheAttributes(..) is based on APCI spec. It may not need the conditional pre-compiling for ARM CPU. Thanks, GaoZhichao > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > Krzysztof Koch > Sent: Wednesday, January 23, 2019 6:58 PM > To: edk2-devel@lists.01.org > Cc: nd@arm.com > Subject: [edk2] [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add > support for PPTT >=20 > Added the acpiview parser for the PPTT table. >=20 > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Krzysztof Koch > --- >=20 > The changes can be seen at: > https://github.com/KrzysztofKoch1/edk2/tree/woa_390_pptt_acpiview_v1 >=20 > Notes: > v1: > - added a parser for PPTT in acpiview [Krzyszto= f] >=20 > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h = | 23 +- > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c = | > 362 ++++++++++++++++++++ >=20 > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib > .c | 4 +- >=20 > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib > .inf | 3 +- >=20 > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib > .uni | 3 +- > 5 files changed, 391 insertions(+), 4 deletions(-) >=20 > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > index > ecf7dae9038a4ebcb3e3764964f0c16ca3ef51f6..a42450c1431be343870dabb4e0 > 3f64ed1cf78afc 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > @@ -1,7 +1,7 @@ > /** @file > Header file for ACPI parser >=20 > - Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. > + Copyright (c) 2016 - 2019, ARM Limited. All rights reserved. > This program and the accompanying materials > are licensed and made available under the terms and conditions of the = BSD > License > which accompanies this distribution. The full text of the license may= be found > at @@ -655,6 +655,27 @@ ParseAcpiMcfg ( > IN UINT8 AcpiTableRevision > ); >=20 > +/** > + This function parses the ACPI PPTT table. > + When trace is enabled this function parses the PPTT table and > + traces the ACPI table fields. > + > + This function also performs validation of the ACPI table fields. > + > + @param [in] Trace If TRUE, trace the ACPI fields. > + @param [in] Ptr Pointer to the start of the buffer. > + @param [in] AcpiTableLength Length of the ACPI table. > + @param [in] AcpiTableRevision Revision of the ACPI table. > +**/ > +VOID > +EFIAPI > +ParseAcpiPptt ( > + IN BOOLEAN Trace, > + IN UINT8* Ptr, > + IN UINT32 AcpiTableLength, > + IN UINT8 AcpiTableRevision > + ); > + > /** > This function parses the ACPI RSDP table. >=20 > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c > new file mode 100644 > index > 0000000000000000000000000000000000000000..d97ddf8e925d30917f888bf33 > e2c1346cd330663 > --- /dev/null > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttPars > +++ er.c > @@ -0,0 +1,362 @@ > +/** @file > + PPTT table parser > + > + Copyright (c) 2019, ARM Limited. All rights reserved. > + This program and the accompanying materials are licensed and made > + available under the terms and conditions of the BSD License which > + accompanies this distribution. The full text of the license may be > + found at http://opensource.org/licenses/bsd-license.php > + > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > EXPRESS OR IMPLIED. > + > + @par Reference(s): > + - ACPI 6.2 Specification - Errata A, September 2017 **/ > + > +#include > +#include > +#include "AcpiParser.h" > + > +// Local variables > +STATIC CONST UINT8* ProcessorTopologyStructureType; STATIC CONST > +UINT8* ProcessorTopologyStructureLength; STATIC CONST UINT32* > +NumberOfPrivateResources; STATIC ACPI_DESCRIPTION_HEADER_INFO > +AcpiHdrInfo; > + > +/** > + An ACPI_PARSER array describing the ACPI PPTT Table. > +**/ > +STATIC CONST ACPI_PARSER PpttParser[] =3D { > + PARSE_ACPI_HEADER (&AcpiHdrInfo) > +}; > + > +/** > + This function validates the Cache Type Structure (Type 1) Line size fi= eld. > + > + @param [in] Ptr Pointer to the start of the field data. > + @param [in] Context Pointer to context specific information e.g. this > + could be a pointer to the ACPI table header. > +**/ > +STATIC > +VOID > +EFIAPI > +ValidateCacheLineSize ( > + IN UINT8* Ptr, > + IN VOID* Context > + ) > +{ > +#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64) > + // Reference: ARM Architecture Reference Manual ARMv8 (D.a) > + // Section D12.2.25: CCSIDR_EL1, Current Cache Size ID Register > + // LineSize, bits [2:0] > + // (Log2(Number of bytes in cache line)) - 4. > + > + UINT16 LineSize; > + LineSize =3D *(UINT16*)Ptr; > + > + if ((LineSize < 16) || (LineSize > 2048)) { > + IncrementErrorCount (); > + Print ( > + L"\nERROR: The cache line size must be between 16 and 2048 bytes" > + L" on ARM Platforms." > + ); > + return; > + } > + > + if ((LineSize & (LineSize - 1)) !=3D 0) { > + IncrementErrorCount (); > + Print (L"\nERROR: The cache line size is not a power of 2."); > + } > +#endif > +} > + > +/** > + This function validates the Cache Type Structure (Type 1) Attributes f= ield. > + > + @param [in] Ptr Pointer to the start of the field data. > + @param [in] Context Pointer to context specific information e.g. this > + could be a pointer to the ACPI table header. > +**/ > +STATIC > +VOID > +EFIAPI > +ValidateCacheAttributes ( > + IN UINT8* Ptr, > + IN VOID* Context > + ) > +{ > +#if defined(MDE_CPU_ARM) || defined (MDE_CPU_AARCH64) > + // Reference: Advanced Configuration and Power Interface (ACPI) > Specification > + // Version 6.2 Errata A, September 2017 > + // Table 5-153: Cache Type Structure > + > + UINT8 Attributes; > + Attributes =3D *(UINT8*)Ptr; > + > + if ((Attributes & 0xE0) !=3D 0) { > + IncrementErrorCount (); > + Print ( > + L"\nERROR: Attributes bits [7:5] are reserved and must be zero.", > + Attributes > + ); > + return; > + } > +#endif > +} > + > +/** > + An ACPI_PARSER array describing the processor topology structure heade= r. > +**/ > +STATIC CONST ACPI_PARSER ProcessorTopologyStructureHeaderParser[] =3D { > + {L"Type", 1, 0, NULL, NULL, (VOID**)&ProcessorTopologyStructureType, > + NULL, NULL}, > + {L"Length", 1, 1, NULL, NULL, (VOID**)&ProcessorTopologyStructureLengt= h, > + NULL, NULL}, > + {L"Reserved", 2, 2, NULL, NULL, NULL, NULL, NULL} }; > + > +/** > + An ACPI_PARSER array describing the Processor Hierarchy Node Structure= - > Type 0. > +**/ > +STATIC CONST ACPI_PARSER ProcessorHierarchyNodeStructureParser[] =3D { > + {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL}, > + {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL}, > + > + {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Parent", 4, 8, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"ACPI Processor ID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Number of private resources", 4, 16, L"%d", NULL, > + (VOID**)&NumberOfPrivateResources, NULL, NULL} }; > + > +/** > + An ACPI_PARSER array describing the Cache Type Structure - Type 1. > +**/ > +STATIC CONST ACPI_PARSER CacheTypeStructureParser[] =3D { > + {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL}, > + {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL}, > + > + {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Next Level of Cache", 4, 8, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Size", 4, 12, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Number of sets", 4, 16, L"%d", NULL, NULL, NULL, NULL}, > + {L"Associativity", 1, 20, L"%d", NULL, NULL, NULL, NULL}, > + {L"Attributes", 1, 21, L"0x%x", NULL, NULL, ValidateCacheAttributes, > +NULL}, > + {L"Line size", 2, 22, L"%d", NULL, NULL, ValidateCacheLineSize, NULL} > +}; > + > +/** > + An ACPI_PARSER array describing the ID Type Structure - Type 2. > +**/ > +STATIC CONST ACPI_PARSER IdStructureParser[] =3D { > + {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL}, > + {L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL}, > + > + {L"VENDOR_ID", 4, 4, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"LEVEL_1_ID", 8, 8, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"LEVEL_2_ID", 8, 16, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"MAJOR_REV", 2, 24, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"MINOR_REV", 2, 26, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"SPIN_REV", 2, 28, L"0x%x", NULL, NULL, NULL, NULL}, }; > + > +/** > + This function parses the Processor Hierarchy Node Structure (Type 0). > + > + @param [in] Ptr Pointer to the start of the Processor Hierarchy No= de > + Structure data. > + @param [in] Length Length of the Processor Hierarchy Node Structure. > +**/ > +STATIC > +VOID > +DumpProcessorHierarchyNodeStructure ( > + IN UINT8* Ptr, > + IN UINT8 Length > + ) > +{ > + UINT8 Offset; > + UINT8* PrivateResourcePtr; > + UINT32 Index; > + CHAR16 Buffer[OUTPUT_FIELD_COLUMN_WIDTH]; > + > + Offset =3D ParseAcpi ( > + TRUE, > + 2, > + "Processor Hierarchy Node Structure", > + Ptr, > + Length, > + PARSER_PARAMS (ProcessorHierarchyNodeStructureParser) > + ); > + > + PrivateResourcePtr =3D Ptr + Offset; > + Index =3D 0; > + while (Index < *NumberOfPrivateResources) { > + UnicodeSPrint ( > + Buffer, > + sizeof (Buffer), > + L"Private resources [%d]", > + Index > + ); > + > + PrintFieldName (4, Buffer); > + Print ( > + L"0x%x\n", > + *((UINT32*) PrivateResourcePtr) > + ); > + > + PrivateResourcePtr +=3D sizeof(UINT32); > + Index++; > + } > +} > + > +/** > + This function parses the Cache Type Structure (Type 1). > + > + @param [in] Ptr Pointer to the start of the Cache Type Structure d= ata. > + @param [in] Length Length of the Cache Type Structure. > +**/ > +STATIC > +VOID > +DumpCacheTypeStructure ( > + IN UINT8* Ptr, > + IN UINT8 Length > + ) > +{ > + ParseAcpi ( > + TRUE, > + 2, > + "Cache Type Structure", > + Ptr, > + Length, > + PARSER_PARAMS (CacheTypeStructureParser) > + ); > +} > + > +/** > + This function parses the ID Structure (Type 2). > + > + @param [in] Ptr Pointer to the start of the ID Structure data. > + @param [in] Length Length of the ID Structure. > +**/ > +STATIC > +VOID > +DumpIDStructure ( > + IN UINT8* Ptr, > + IN UINT8 Length > + ) > +{ > + ParseAcpi ( > + TRUE, > + 2, > + "ID Structure", > + Ptr, > + Length, > + PARSER_PARAMS (IdStructureParser) > + ); > +} > + > +/** > + This function parses the ACPI PPTT table. > + When trace is enabled this function parses the PPTT table and > + traces the ACPI table fields. > + > + This function parses the following processor topology structures: > + - Processor hierarchy node structure (Type 0) > + - Cache Type Structure (Type 1) > + - ID structure (Type 2) > + > + This function also performs validation of the ACPI table fields. > + > + @param [in] Trace If TRUE, trace the ACPI fields. > + @param [in] Ptr Pointer to the start of the buffer. > + @param [in] AcpiTableLength Length of the ACPI table. > + @param [in] AcpiTableRevision Revision of the ACPI table. > +**/ > +VOID > +EFIAPI > +ParseAcpiPptt ( > + IN BOOLEAN Trace, > + IN UINT8* Ptr, > + IN UINT32 AcpiTableLength, > + IN UINT8 AcpiTableRevision > + ) > +{ > + UINT32 Offset; > + UINT8* ProcessorTopologyStructurePtr; > + > + if (!Trace) { > + return; > + } > + > + Offset =3D ParseAcpi ( > + TRUE, > + 0, > + "PPTT", > + Ptr, > + AcpiTableLength, > + PARSER_PARAMS (PpttParser) > + ); > + ProcessorTopologyStructurePtr =3D Ptr + Offset; > + > + while (Offset < AcpiTableLength) { > + // Parse Processor Hierarchy Node Structure to obtain Type and Lengt= h. > + ParseAcpi ( > + FALSE, > + 0, > + NULL, > + ProcessorTopologyStructurePtr, > + 4, // Length of the processor topology structure header is 4 byte= s > + PARSER_PARAMS (ProcessorTopologyStructureHeaderParser) > + ); > + > + if ((Offset + (*ProcessorTopologyStructureLength)) > AcpiTableLength= ) { > + IncrementErrorCount (); > + Print ( > + L"ERROR: Invalid processor topology structure length:" > + L" Type =3D %d, Length =3D %d\n", > + *ProcessorTopologyStructureType, > + *ProcessorTopologyStructureLength > + ); > + break; > + } > + > + PrintFieldName (2, L"* Structure Offset *"); > + Print (L"0x%x\n", Offset); > + > + switch (*ProcessorTopologyStructureType) { > + case EFI_ACPI_6_2_PPTT_TYPE_PROCESSOR: > + DumpProcessorHierarchyNodeStructure ( > + ProcessorTopologyStructurePtr, > + *ProcessorTopologyStructureLength > + ); > + break; > + case EFI_ACPI_6_2_PPTT_TYPE_CACHE: > + DumpCacheTypeStructure ( > + ProcessorTopologyStructurePtr, > + *ProcessorTopologyStructureLength > + ); > + break; > + case EFI_ACPI_6_2_PPTT_TYPE_ID: > + DumpIDStructure ( > + ProcessorTopologyStructurePtr, > + *ProcessorTopologyStructureLength > + ); > + break; > + default: > + IncrementErrorCount (); > + Print ( > + L"ERROR: Unknown processor topology structure:" > + L" Type =3D %d, Length =3D %d\n", > + *ProcessorTopologyStructureType, > + *ProcessorTopologyStructureLength > + ); > + } > + > + ProcessorTopologyStructurePtr +=3D *ProcessorTopologyStructureLength= ; > + Offset +=3D *ProcessorTopologyStructureLength; > + } // while > +} > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.c > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.c > index > c6eb7087cfdde2db6a0298b508c751110a061677..2f908bfbd3381f2ca2cfd066dc > ed1ee22f116b46 100644 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.c > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > +++ andLib.c > @@ -1,7 +1,7 @@ > /** @file > Main file for 'acpiview' Shell command function. >=20 > - Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.
> + Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
> This program and the accompanying materials > are licensed and made available under the terms and conditions of the = BSD > License > which accompanies this distribution. The full text of the license may= be found > at @@ -41,6 +41,8 @@ ACPI_TABLE_PARSER ParserList[] =3D { > {EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, > ParseAcpiMadt}, >=20 > {EFI_ACPI_6_2_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BA > SE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE, > ParseAcpiMcfg}, > + > {EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIG > NATURE, > + ParseAcpiPptt}, > {RSDP_TABLE_INFO, ParseAcpiRsdp}, > {EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE, > ParseAcpiSlit}, > {EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, > ParseAcpiSpcr}, diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.inf > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.inf > index > 6df8c08b855241ed4704b606bb1fd61a0a59464a..db06e7a0667c787b183322e87 > 51ab3f923f01ea4 100644 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.inf > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > +++ andLib.inf > @@ -1,7 +1,7 @@ > ## @file > # Provides Shell 'acpiview' command functions # -# Copyright (c) 2016 -= 2018, > ARM Limited. All rights reserved.
> +# Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
> # > # This program and the accompanying materials # are licensed and made > available under the terms and conditions of the BSD License @@ -41,6 +41,= 7 > @@ [Sources.common] > Parsers/Iort/IortParser.c > Parsers/Madt/MadtParser.c > Parsers/Mcfg/McfgParser.c > + Parsers/Pptt/PpttParser.c > Parsers/Rsdp/RsdpParser.c > Parsers/Slit/SlitParser.c > Parsers/Spcr/SpcrParser.c > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.uni > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.uni > index > 1c4d66e1ff507054d4aa42bd47bfae8824c218e6..0762eeba533f01e6e4656084e > c108dea8bd7c58b 100644 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand > Lib.uni > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > +++ andLib.uni > @@ -1,6 +1,6 @@ > // /** > // > -// Copyright (c) 2016 - 2017, ARM Limited. All rights reserved.
> +// Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
> // This program and the accompanying materials // are licensed and made > available under the terms and conditions of the BSD License // which > accompanies this distribution. The full text of the license may be found = at @@ - > 82,6 +82,7 @@ > " GTDT - Generic Timer Description Table\r\n" > " IORT - IO Remapping Table\r\n" > " MCFG - Memory Mapped Config Space Base Address Description > Table\r\n" > +" PPTT - Processor Properties Topology Table\r\n" > " RSDP - Root System Description Pointer\r\n" > " SLIT - System Locality Information Table\r\n" > " SPCR - Serial Port Console Redirection Table\r\n" > -- > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' >=20 > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel