From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 56CC32194D387 for ; Thu, 24 Jan 2019 08:16:52 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jan 2019 08:16:51 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,517,1539673200"; d="scan'208";a="119135928" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga008.fm.intel.com with ESMTP; 24 Jan 2019 08:16:51 -0800 Received: from fmsmsx126.amr.corp.intel.com (10.18.125.43) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 24 Jan 2019 08:16:51 -0800 Received: from fmsmsx103.amr.corp.intel.com ([169.254.2.205]) by FMSMSX126.amr.corp.intel.com ([169.254.1.70]) with mapi id 14.03.0415.000; Thu, 24 Jan 2019 08:16:50 -0800 From: "Carsey, Jaben" To: Sami Mujawar , Krzysztof Koch , "edk2-devel@lists.01.org" CC: "leif.lindholm@linaro.org" , Matteo Carlini , Stephanie Hughes-Fitt , "Ni, Ray" , nd Thread-Topic: [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add support for PPTT Thread-Index: AQHUsnTVMhvHL6AgmU+bdsODTyhtYKW7jyTwgAOPDwD//30+0A== Date: Thu, 24 Jan 2019 16:16:49 +0000 Message-ID: References: <20190122170558.5892-1-krzysztof.koch@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOWFhMzJjOTgtZWQzNS00N2RiLWIwNDMtMTM2NWNlOTNiMzRlIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoieW1sTzdhSGFKRitRT1FKODZHY0NObmk5TDlmZldqSFwvdFltcDdtZjA5VmxNVG1Zek1FbXNcL1VoY2pIMDRDUGZvIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.1.200.107] 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: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 X-List-Received-Date: Thu, 24 Jan 2019 16:16:52 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Jaben Carsey And pushed. > -----Original Message----- > From: Sami Mujawar [mailto:Sami.Mujawar@arm.com] > Sent: Thursday, January 24, 2019 8:05 AM > To: Carsey, Jaben ; Krzysztof Koch > ; edk2-devel@lists.01.org > Cc: leif.lindholm@linaro.org; Matteo Carlini ; > Stephanie Hughes-Fitt ; Ni, Ray > ; nd > Subject: RE: [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add > support for PPTT > Importance: High >=20 > Reviewed-by: Sami Mujawar >=20 > Regards, >=20 > Sami Mujawar >=20 > -----Original Message----- > From: Carsey, Jaben > Sent: 22 January 2019 05:47 PM > To: Krzysztof Koch ; edk2-devel@lists.01.org > Cc: leif.lindholm@linaro.org; Matteo Carlini ; > Stephanie Hughes-Fitt ; Ni, Ray > ; Sami Mujawar ; nd > > Subject: RE: [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add > support for PPTT >=20 > Reviewed-by: Jaben Carsey >=20 > Note: I am not pushing this to allow proper time for other to > review/comment. The code looks good to me. >=20 > Jaben >=20 > > -----Original Message----- > > From: Krzysztof Koch [mailto:krzysztof.koch@arm.com] > > Sent: Tuesday, January 22, 2019 9:06 AM > > To: edk2-devel@lists.01.org > > Cc: leif.lindholm@linaro.org; Matteo.Carlini@arm.com; > > Stephanie.Hughes- Fitt@arm.com; Carsey, Jaben > > ; Ni, Ray ; > > sami.mujawar@arm.com; nd@arm.com > > Subject: [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add > > support for PPTT > > Importance: High > > > > Added the acpiview parser for the PPTT table. > > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Krzysztof Koch > > --- > > The changes can be seen at: > > > https://github.com/KrzysztofKoch1/edk2/tree/woa_390_pptt_acpiview_v1 > > > > Notes: > > v1: > > - add PPTT parser to acpiview [Krzysz= tof] > > > > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h = | > 23 > > +- > > > > > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c > > | 362 ++++++++++++++++++++ > > > > > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > > dLib.c | 4 +- > > > > > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > > dLib.inf | 3 +- > > > > > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > > dLib.uni | 3 +- > > 5 files changed, 391 insertions(+), 4 deletions(-) > > > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > > index > > > ecf7dae9038a4ebcb3e3764964f0c16ca3ef51f6..a42450c1431be343870dabb4e > > 03f64ed1cf78afc 100644 > > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > > @@ -1,7 +1,7 @@ > > /** @file > > Header file for ACPI parser > > > > - 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 > > ); > > > > +/** > > + 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. > > > > 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/PpttParser. > > 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 = field. > > + > > + @param [in] Ptr Pointer to the start of the field data. > > + @param [in] Context Pointer to context specific information e.g. thi= s > > + 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= field. > > + > > + @param [in] Ptr Pointer to the start of the field data. > > + @param [in] Context Pointer to context specific information e.g. thi= s > > + 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 > > header. > > +**/ > > +STATIC CONST ACPI_PARSER ProcessorTopologyStructureHeaderParser[] > =3D > > { > > + {L"Type", 1, 0, NULL, NULL, (VOID**)&ProcessorTopologyStructureType, > > + NULL, NULL}, > > + {L"Length", 1, 1, NULL, NULL, > > (VOID**)&ProcessorTopologyStructureLength, > > + 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 = Node > > + 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= data. > > + @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 Len= gth. > > + ParseAcpi ( > > + FALSE, > > + 0, > > + NULL, > > + ProcessorTopologyStructurePtr, > > + 4, // Length of the processor topology structure header is 4 by= tes > > + PARSER_PARAMS (ProcessorTopologyStructureHeaderParser) > > + ); > > + > > + if ((Offset + (*ProcessorTopologyStructureLength)) > AcpiTableLeng= th) > { > > + 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/UefiShellAcpiViewComm > > andLib.c > > > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > > andLib.c > > index > > > c6eb7087cfdde2db6a0298b508c751110a061677..2f908bfbd3381f2ca2cfd066dc > > ed1ee22f116b46 100644 > > --- > > > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > > andLib.c > > +++ > > > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > > andLib.c > > @@ -1,7 +1,7 @@ > > /** @file > > Main file for 'acpiview' Shell command function. > > > > - 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}, > > > > > {EFI_ACPI_6_2_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE > > _BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE, > > ParseAcpiMcfg}, > > + > > > {EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_S > > IGNATURE, > > + 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/UefiShellAcpiViewComm > > andLib.inf > > > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > > andLib.inf > > index > > > 6df8c08b855241ed4704b606bb1fd61a0a59464a..db06e7a0667c787b183322e87 > > 51ab3f923f01ea4 100644 > > --- > > > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > > andLib.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/UefiShellAcpiViewComm > > andLib.uni > > > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > > andLib.uni > > index > > > 1c4d66e1ff507054d4aa42bd47bfae8824c218e6..0762eeba533f01e6e4656084e > > c108dea8bd7c58b 100644 > > --- > > > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > > andLib.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)'