From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.6.40; helo=eur04-db3-obe.outbound.protection.outlook.com; envelope-from=krzysztof.koch@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60040.outbound.protection.outlook.com [40.107.6.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 563E1210FBEE9 for ; Tue, 29 Jan 2019 05:08:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c1iJrKP7j3+grN2RbiZUonRysp6R/FmMAGTHil1Rad0=; b=XIagmok3Obz75sv91O7g1bD4aCklmI35CrrLLdPG9jyaueonfVtVnAKiyb8efa6rn28RKv5/YNmhm2AHw6k0pVyXhZsf52cBQ9+I4+9x56RLTVQGwoO00xAOJzt3zEitN344/0x8s7X35tD6+L7csT8Sdm+ZSJlFivojBovVoAo= Received: from VI1PR08MB1167.eurprd08.prod.outlook.com (10.166.45.144) by VI1PR08MB3774.eurprd08.prod.outlook.com (20.178.15.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.19; Tue, 29 Jan 2019 13:08:09 +0000 Received: from VI1PR08MB1167.eurprd08.prod.outlook.com ([fe80::758c:c1be:633a:75b2]) by VI1PR08MB1167.eurprd08.prod.outlook.com ([fe80::758c:c1be:633a:75b2%5]) with mapi id 15.20.1558.023; Tue, 29 Jan 2019 13:08:08 +0000 From: Krzysztof Koch To: "Gao, Zhichao" , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Add support for PPTT Thread-Index: AQHUswyoszGDHPerJkmjHdRgS++NL6XDNFKAgAMLXuA= Date: Tue, 29 Jan 2019 13:08:08 +0000 Message-ID: References: <20190123105811.4040-1-krzysztof.koch@arm.com> <3CE959C139B4C44DBEA1810E3AA6F9000B799802@SHSMSX101.ccr.corp.intel.com> In-Reply-To: <3CE959C139B4C44DBEA1810E3AA6F9000B799802@SHSMSX101.ccr.corp.intel.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Krzysztof.Koch@arm.com; x-originating-ip: [217.140.106.53] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR08MB3774; 6:gUSK8rHwK1IKLBFUhVlS8WBJuhZ01f0KICGGJlc2dwz8XbelMPg8GqLcc+W4XJQWF+Vd2Y8gqh2nvgx7XzyhVPIYGQkAVTljFU2s4LbGnqywLD6NtTUo37+0FF5E+spV++QRFA8kIdRJcfNIEIQAph/8oFB1E/ARlE6FYDXC5dihrfsLgApUopRWp+qw9qR5h8NxyFYwrRMwgG8jp38Y17HSW6eSrJli94302CLykt3R7JxShz1YUf6FQiioM9o513IKG8mjnhSHZI4J9JMZ7pr6iu8yEcvAumBvpO4qJJ0QZ2TA6J/KWLbOiRSrDopH3IzlKuRY97xvt67W9Nfnm6kwFU/Dav1WEnWxt5yv52ZHVnOIV5/chUYN1azkXutK2/f0gC2FwHEievng8T4h6oMEGiA0AiSTUG1rjcJzWOkhNN5NNMz6MGMEoqECErw32BShz0uJ9fAUmhImrPNAng==; 5:1vM9Hxpsaw171TTd99w+K0DB8gQWQk4JQmjQZXp99mfSzvexqjYUTd5KuQr1w/lt6/z9vhBTCEqh2nKxqQwCiATjp2USvpRmDc5DEYAH1J4GD/ylWtZ5trVNiXJxFhNqwpfK9mSxrYjiCwKCDgMEgcxwg8TRyik05Cxvk730nCZjyhXdLKMf8t2fOHk9ozduQe0yWRaLXyPDDZFCmgIFig==; 7:mGfuXKiNFG4pyTtbp0+uZS1zUvpvzeM7GQRHpq8tNk84MfelL6ZvUV1i9jdC27YzUOQLtZJl0Xz/pHXicFYijWMMKCx7vnRsD95eejuZz95rkaL1QIdtsXfb/3YSKx97vYOviKNNSCW7aupa+KFRew== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 3f60a1cf-0565-47db-3d2e-08d685ead0ab x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR08MB3774; x-ms-traffictypediagnostic: VI1PR08MB3774: x-microsoft-antispam-prvs: x-forefront-prvs: 093290AD39 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(396003)(136003)(39860400002)(13464003)(199004)(189003)(40434004)(16799955002)(5024004)(14444005)(15188155005)(99286004)(305945005)(14454004)(6436002)(71190400001)(71200400001)(97736004)(7736002)(76176011)(11346002)(8936002)(446003)(476003)(486006)(7696005)(72206003)(6246003)(55016002)(105586002)(966005)(30864003)(68736007)(53376002)(256004)(106356001)(478600001)(186003)(25786009)(33656002)(8676002)(74316002)(26005)(53936002)(229853002)(81156014)(81166006)(6506007)(53546011)(6116002)(86362001)(316002)(53946003)(9686003)(6306002)(102836004)(110136005)(2906002)(2501003)(345774005)(3846002)(66066001)(213903007)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB3774; H:VI1PR08MB1167.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: hjrzW/PEOjxMuj5dZDW/3VrDX1070zGWJD8W5+ZT9gCIgZvjbbh3x9TkIE3cqZnKfHMjYCfn+HIkak8R+/sWZI6HqziAbHcLF7IAznxZwLMGXfEEq97ht2jGGcVyIQVK5fROLsJjA0MbKVGCaVHd53MlCJYcexxAqxTnKw7hvTMtXpkcv+12bGOplTCnHWGfiRk3+uZUSDBYwXazHg5xlakJO6HdFi8eBdiE6rsqgUMj8swqYS1LakeISnnmmSOVXFWFvaSLklY9P2m4wRmApu+ovaatlC1kbagvbpGFv1Lhb4K9qkb0y9sVlFbZfuHn0Gv6rs/wI7kbCQAD7iMSWXTYW/fy7ONPPyEJN2s31fzmBanfKgVtxfZFVsOLCthNaopQO6fgLkOQKuRiA8BanS3CzvExkPgQgbri4edEX0I= MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f60a1cf-0565-47db-3d2e-08d685ead0ab X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jan 2019 13:08:08.7206 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3774 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: Tue, 29 Jan 2019 13:08:12 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Zhichao, Thank you for spotting that. I agree, the cache attribute check can be appl= ied to all architectures. I will submit a patch fixing that in the next few days. Kind regards, Krzysztof Koch -----Original Message----- From: Gao, Zhichao Sent: Sunday, January 27, 2019 14:33 To: Krzysztof Koch ; edk2-devel@lists.01.org Cc: Gao, Liming Subject: RE: [edk2] [PATCH v1 1/1] ShellPkg/UefiShellAcpiViewCommandLib: Ad= d support for PPTT 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 > > 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: > - added a parser for PPTT in acpiview [Krzyszto= f] > > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h = | 23 +- > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c = | > 362 ++++++++++++++++++++ > > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib > .c | 4 +- > > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib > .inf | 3 +- > > ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib > .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..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 > > - 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/PpttPa > +++ rs > +++ 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/UefiShellAcpiViewComman > d > Lib.c > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > d > Lib.c > index > c6eb7087cfdde2db6a0298b508c751110a061677..2f908bfbd3381f2ca2cfd066dc > ed1ee22f116b46 100644 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > d > Lib.c > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCo > +++ mm > +++ 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_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/UefiShellAcpiViewComman > d > Lib.inf > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > d > Lib.inf > index > 6df8c08b855241ed4704b606bb1fd61a0a59464a..db06e7a0667c787b183322e87 > 51ab3f923f01ea4 100644 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > d > Lib.inf > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCo > +++ mm > +++ 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/UefiShellAcpiViewComman > d > Lib.uni > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > d > Lib.uni > index > 1c4d66e1ff507054d4aa42bd47bfae8824c218e6..0762eeba533f01e6e4656084e > c108dea8bd7c58b 100644 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComman > d > Lib.uni > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCo > +++ mm > +++ 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)' > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel IMPORTANT NOTICE: The contents of this email and any attachments are confid= ential and may also be privileged. If you are not the intended recipient, p= lease notify the sender immediately and do not disclose the contents to any= other person, use it for any purpose, or store or copy the information in = any medium. Thank you.