From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web10.2003.1668485213493918613 for ; Mon, 14 Nov 2022 20:06:53 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=AZgVYY5f; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: zhichao.gao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668485213; x=1700021213; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=d4YuA+Ff9Q4Y7ULg0Y3GJdfah6iX5tf4tYnoeOQhHdk=; b=AZgVYY5f2Xh4keDKQo2XiTwkDm7c3pO0xwfBsrIKUQNAI8w8uCBWv/kk q5rG2WrVFrhiPKnBPkx/RzIqz5q4cm5dI/8v4VbQwvvfLfzLIR1Q+WeJN 84n3eqaEgQ1FDR4wSIyfBmY3jK0TgoC8ubyGz1wXp0hD58usakXyWhEVJ yIIIL6OEV1UhhuA8aWG+bPwlTZ2eeDO01yBRx1e37x/PWX4rtWstmbZuK S1HLxOhLll082roTBFqOipoHY9dYR3Hlv9sBST8tN/s/xIWHzDIxK4/VC /1T0w2kHGj9H5ejhVTUYHtkrzPCRKiER4ZW7zoy8dv9nhMcHUEY73moYk g==; X-IronPort-AV: E=McAfee;i="6500,9779,10531"; a="374287185" X-IronPort-AV: E=Sophos;i="5.96,164,1665471600"; d="scan'208";a="374287185" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2022 20:06:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10531"; a="707579076" X-IronPort-AV: E=Sophos;i="5.96,164,1665471600"; d="scan'208";a="707579076" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga004.fm.intel.com with ESMTP; 14 Nov 2022 20:06:52 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 14 Nov 2022 20:06:51 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Mon, 14 Nov 2022 20:06:51 -0800 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.48) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Mon, 14 Nov 2022 20:06:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BB4zJX22TemYDMxU7P/A4ju51EN/oNQV8xc3n23Q5Qi+fyP6ccG/ftyL4u0b2ZI3vttv8qnzVUvbcEcEdZWdyd3YeWmHz7XrFSmO1GBGnEJAfvtDmVsQ3KcmJAcfQrTVDVtZCI16q4a43eAYAKsEwGJMmcOnH6636wdDuNkDkxyfVAlnn+y7dUDxNvwHqusi82FZXJWr397Jnadz/eF7SwEry+MfMFmJCFK6Wd9smeLDQd8cgRJj9E+oI4s+0ly49UJyBbYWPaDE4dkTwjo62K32wMvoFftzd8WVfIyy4d9Hw0hPLUf0FurDROenzc0j84lVGfFHRtX/cFkMP9JNvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=64bFwmpln1X7h0xNqcRtioGJkB49cGi//AdvIB/ocs4=; b=a6k/QvNhyVVXQEDCDoBl/FFpgnCv8V3V8lNMUgcX/IKHoXoygVAbApVdBZtdWYxv2fpV/fpNODqH9X/vnTv+5WjfJzx2iVceh9xvfWKI84Mi0pXsY1bHtIuWC/iDhhhnAzSKAsMfKuxsEi0SuRemtQh8obdopC8pgChaIaJjhnCpO61oLlJFTzmkZw+fkQ1BEk0c81xuW3Tjs/hKp5SCgAq5eklJ821ry34VboMvzz4riyx8Y8D8jH9dKFQKxVrYWx6dodZ/lIawqbhVlj+gJ9LmYnyjm33eN1yg4qdOm0bXvZMjV1JhBX9CYqGZKedK3Zy3+NQBeQDQmsi/7g91lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH7PR11MB6377.namprd11.prod.outlook.com (2603:10b6:510:1fb::13) by MW4PR11MB5821.namprd11.prod.outlook.com (2603:10b6:303:184::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.17; Tue, 15 Nov 2022 04:06:48 +0000 Received: from PH7PR11MB6377.namprd11.prod.outlook.com ([fe80::6a3:d470:3867:1403]) by PH7PR11MB6377.namprd11.prod.outlook.com ([fe80::6a3:d470:3867:1403%5]) with mapi id 15.20.5813.017; Tue, 15 Nov 2022 04:06:48 +0000 From: "Gao, Zhichao" To: Jeff Brasen , "devel@edk2.groups.io" CC: "Kinney, Michael D" , "Gao, Liming" , "Liu, Zhiguang" , "Ni, Ray" , "nd@arm.com" , "sami.mujawar@arm.com" Subject: Re: [PATCH v2 2/2] ShellPkg/AcpiView: APMT Parser Thread-Topic: [PATCH v2 2/2] ShellPkg/AcpiView: APMT Parser Thread-Index: AQHY8GeJ30X84WqCKESTdLA6uqkpS64/bnRw Date: Tue, 15 Nov 2022 04:06:48 +0000 Message-ID: References: <83aca131985fd3f88a3df723d05d16535689539b.1667577844.git.jbrasen@nvidia.com> In-Reply-To: <83aca131985fd3f88a3df723d05d16535689539b.1667577844.git.jbrasen@nvidia.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB6377:EE_|MW4PR11MB5821:EE_ x-ms-office365-filtering-correlation-id: c944adec-b49f-4069-b1c9-08dac6bed13e x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lAVKQv+S9VEWdxFwIqD2yDDd24t2cBCELLMQSiYI/VEO3ZRj9upKffdC5KvCSv4R/mC+eDvKQ83ZMbj2jvmjuHrGwaB3ebEIkgk/DsDJz5zUHdC/P3jwPwV0XQSWVpyuYzlKqqzb+mTREb9AR3WqtrvhpBAAGVDSVB9IiIzrSWNm1iOTh53Sw0g6CtHDmDnjYqoQ3O3vVcuOb3hIAvCgwfyGeLwBakKNDEDgRDMVq7UoAV4iNqY/Ia9ESwwhPGUitPdYT4EksKHgokbq5aFfyPt1vwmmiLhsr3vSkOKSE5PJt3Zp3FouIxSF3C98neEcmfD5ZpvmJBxB09MVw0TIneFJHIRhnF8W/oC8toAk3DbLX4YjKm3IZxTfejnNBQ9OWyXqf28BBqSJrCgldjXncHpcf1L1XOWGe3NzTJX5VJjoxeQjMFZQo2KEzQSc5E8WVqzqr4gwO/Gx3WFRIphbqOkAGLGHWcyrrN31TxzJkheBkjtSGdonA1L0Q4zvy/l7ssCT/ZpLRuVATL2mwA1B4tkpcUOsAD5FsrVPmL0wxaCS49UjiGWCMPeM4pK8i+qfvvL9B3zvkJnqNES+i5h/iiepvcAT1IIK1+7Z8WF/NwJcblwREzprBJQzFhiz4qF/h+1nTNMYhblzCWdTFO51Ch3fauhboIqbdEX5lgfZ4dyidzRgsF9O1PFR0q4AbeyAkDa5UTjUxSU4KXQWyjLXrV1zWT/udZKvS4flL84QuehHgdPzA2ioM6nAP8cSwB6O/fAZSKUh0U+G1JSZ8w7BYA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB6377.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(366004)(376002)(396003)(136003)(39860400002)(346002)(451199015)(71200400001)(478600001)(38070700005)(33656002)(6506007)(54906003)(7696005)(110136005)(316002)(19627235002)(66476007)(8676002)(66556008)(4326008)(66946007)(41300700001)(9686003)(66446008)(64756008)(76116006)(8936002)(5660300002)(26005)(186003)(52536014)(55016003)(83380400001)(2906002)(53546011)(122000001)(86362001)(38100700002)(82960400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?toBbz6rH0cMxQT7vqsensnWsRJ0A0Fz4DpSPccCwPVO09c7L44L6VJ+ZRfd6?= =?us-ascii?Q?xPK3DMLZ6DYK/N6KrKE9d1O1FGeZW+U3VFbWhNc6Bd2u3tcibLtnVn/xZnWV?= =?us-ascii?Q?5re4s6QLVlljzU4XSkSEfunEmLIUVS1cKff5rAtYR5DEkRdH2N+0I5CI2dB2?= =?us-ascii?Q?mHy8qnQ2j7BALug/vLoUtOIXmf94rLH3d26lSbQAvka4wII9QlG5QWuIhZW6?= =?us-ascii?Q?EzRMsHrcizrOJqWw+Pj6IPBdjqVw9y462laOpNnR9rgfkbJGp24rlyMvf3yr?= =?us-ascii?Q?KPJvYFbMICtcpUdIjLWoAWXdO6OeGabSHAaoeUFgdMaRPtqKjUXnetSVrE8y?= =?us-ascii?Q?s64+Xh49EVvA6K3OdBWCf4EJIl843Ju6++5g8Rpm2FjiX0a7zvCy8ELgeUdW?= =?us-ascii?Q?HTZte4XzOb5pFKbZu5h8j1TwXjkd4jx9M1xD/YZxwwEUaWyh2TVhiQJD3PbY?= =?us-ascii?Q?HU+JSmXue7suLCFWVvVxvHz7WcIpOrS/Bu/9PdQMjaqqfQKta2SwWgXViIdp?= =?us-ascii?Q?VuKvMUkwwNnMZ3QtfnOE+Dpx3F7FR0qA2PCh4Ukvrk6quUu/SkjpB8cp9BTR?= =?us-ascii?Q?P27IRJFHsFuSHrsM3n0SdsvBq72ntyLJHm2rNarhbUAk4RT2hmWv3eAmLni0?= =?us-ascii?Q?PzP/rKXLM82JdH6FeUj+g5ee3y70oRKFc4vSArgXdNA9ynnMfNLudTIemoqO?= =?us-ascii?Q?P6uDYDEAxgMip7XNlop0wW+35POFjqjwacLhn/Un2uB4eU38OjiY6+ztKfq2?= =?us-ascii?Q?cIqlTbSftU2xhkbTQP/LMnQNayhQ9Hfun9JBOGG9+JV9gr5ZBaoNzd0Q3SrQ?= =?us-ascii?Q?Uw/BEXj2oclxq9YGrhcUegV2Gt9fA96Rxlv1/NR8nz/0r7Jk5EXEJPVhcsl8?= =?us-ascii?Q?v2qyYjG2xM81nZEWzqoE7QHEOl5ip3A9Rm0O4ttNCtKeig+s8q8YAbbnExsf?= =?us-ascii?Q?BOgT0/5jGZIYDrTfGr+QeXNS18i68sscHpwNFHT5vLlr361f72hr94pQmq+7?= =?us-ascii?Q?spNhcwtaPwQDUBQAyuWLw6UGTFRThr91qzg1tbco15c7CqLD74ClZPRNgw9n?= =?us-ascii?Q?+QPoaTe1GZVA5zSctQIkm8QicBtv4OUV3QaZbJZj059SYdkM9tL4NGX/GB+c?= =?us-ascii?Q?LfWdSYLjYw5joCBCqGp2pHJ1pdQjQBv/++WKuh2n66sHkRDBKlgrKatbaMZn?= =?us-ascii?Q?rgzMLYEzixU9UX2T9AQzj2nmFDPgguD37xLGFKg9zvQIPVDCqYhYlOfa4hCH?= =?us-ascii?Q?0rylkgdQzKDbRojRdC3gV2rgpZs5Vmr8YWUnnSStX8aL+fLXoNEW1Cle0ern?= =?us-ascii?Q?UAJrh4NJRNhrNBgnwU7oGchgtxfBKvYmOAT7RxZH9+T6HkFQazwjD5m25uXf?= =?us-ascii?Q?o8fhahIdlyud4Y+Jo01rAovifZ8XQI+EBHHYM1whAhuCtw6jJ1GX7iHw7M4g?= =?us-ascii?Q?nf9D+UncPdXgnbgjZoS3JmzPdCv7picMRhhPh23KBquRn9HmCZzVW7tjOeVn?= =?us-ascii?Q?6/bnopg+ZahK9cXblgmxfmZudWURRqDRYKnWLD1jrH8bfDYCoQm/BxS4O05q?= =?us-ascii?Q?BWBdrq4Jcd1T2pCWR7ck9L9G968e421sMU/HUQ6g?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB6377.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c944adec-b49f-4069-b1c9-08dac6bed13e X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2022 04:06:48.2509 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iJYEioaM7oyq6VSZtD4J/nx8WFIyn+TtstgpO3VNZWC3juyA97EeFdo9bwJxzLnpsUpLQxlkwonNRHlEeXl26A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB5821 Return-Path: zhichao.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Zhichao Gao Thanks, Zhichao > -----Original Message----- > From: Jeff Brasen > Sent: Saturday, November 5, 2022 12:05 AM > To: devel@edk2.groups.io > Cc: Kinney, Michael D ; Gao, Liming > ; Liu, Zhiguang ; Gao, > Zhichao ; Ni, Ray ; nd@arm.com; > sami.mujawar@arm.com; Jeff Brasen > Subject: [PATCH v2 2/2] ShellPkg/AcpiView: APMT Parser >=20 > Add a new parser for the Arm Performance Monitoring Unit Table. >=20 > The APMT table describes the properties of PMU support >=20 > implemented by components in an Arm-based system. >=20 >=20 >=20 > Signed-off-by: Jeff Brasen >=20 > --- >=20 > .../UefiShellAcpiViewCommandLib/AcpiParser.h | 21 ++++ >=20 > .../Parsers/Apmt/ApmtParser.c | 106 ++++++++++++++++++ >=20 > .../UefiShellAcpiViewCommandLib.c | 1 + >=20 > .../UefiShellAcpiViewCommandLib.inf | 1 + >=20 > .../UefiShellAcpiViewCommandLib.uni | 1 + >=20 > 5 files changed, 130 insertions(+) >=20 > create mode 100644 > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser. > c >=20 >=20 >=20 > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h >=20 > index db8c88f6df..6a1de4e12b 100644 >=20 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h >=20 > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h >=20 > @@ -531,6 +531,27 @@ ParseAcpiAest ( >=20 > IN UINT8 AcpiTableRevision >=20 > ); >=20 >=20 >=20 > +/** >=20 > + This function parses the ACPI APMT table. >=20 > + When trace is enabled this function parses the APMT table and >=20 > + traces the ACPI table fields. >=20 > + >=20 > + This function also performs validation of the ACPI table fields. >=20 > + >=20 > + @param [in] Trace If TRUE, trace the ACPI fields. >=20 > + @param [in] Ptr Pointer to the start of the buffer. >=20 > + @param [in] AcpiTableLength Length of the ACPI table. >=20 > + @param [in] AcpiTableRevision Revision of the ACPI table. >=20 > +**/ >=20 > +VOID >=20 > +EFIAPI >=20 > +ParseAcpiApmt ( >=20 > + IN BOOLEAN Trace, >=20 > + IN UINT8 *Ptr, >=20 > + IN UINT32 AcpiTableLength, >=20 > + IN UINT8 AcpiTableRevision >=20 > + ); >=20 > + >=20 > /** >=20 > This function parses the ACPI BGRT table. >=20 > When trace is enabled this function parses the BGRT table and >=20 > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtPars > er.c > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtPars > er.c >=20 > new file mode 100644 >=20 > index 0000000000..ad64adbb0a >=20 > --- /dev/null >=20 > +++ > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtPars > er.c >=20 > @@ -0,0 +1,106 @@ >=20 > +/** @file >=20 > + APMT table parser >=20 > + >=20 > + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. >=20 > + Copyright (c) 2017 - 2018, ARM Limited. All rights reserved. >=20 > + SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > + @par Reference(s): >=20 > + - ACPI 6.2 Specification - Errata A, September 2017 >=20 > +**/ >=20 > + >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include "AcpiParser.h" >=20 > +#include "AcpiTableParser.h" >=20 > + >=20 > +// Local variables >=20 > +STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo; >=20 > +STATIC CONST UINT16 *NodeLength; >=20 > + >=20 > +/** >=20 > + An ACPI_PARSER array describing the ACPI APMT Table. >=20 > +**/ >=20 > +STATIC CONST ACPI_PARSER ApmtParser[] =3D { >=20 > + PARSE_ACPI_HEADER (&AcpiHdrInfo) >=20 > +}; >=20 > + >=20 > +/** >=20 > + An ACPI_PARSER array describing the ACPI Arm PMU Node. >=20 > +**/ >=20 > +STATIC CONST ACPI_PARSER ArmPmuNodeParser[] =3D { >=20 > + { L"Length", 2, 0, L"0x%x", NULL, (VOID **)&NodeLe= ngth, NULL, > NULL }, >=20 > + { L"Node flags", 1, 2, L"0x%x", NULL, NULL, = NULL, NULL }, >=20 > + { L"Node type", 1, 3, L"0x%x", NULL, NULL, = NULL, NULL }, >=20 > + { L"Identifier", 4, 4, L"0x%x", NULL, NULL, = NULL, NULL }, >=20 > + { L"Node Instance primary", 8, 8, L"0x%lx", NULL, NULL, = NULL, > NULL }, >=20 > + { L"Node Instance secondary", 4, 16, L"0x%x", NULL, NULL, = NULL, > NULL }, >=20 > + { L"Base address 0", 8, 20, L"0x%lx", NULL, NULL, = NULL, NULL }, >=20 > + { L"Base address 1", 8, 28, L"0x%lx", NULL, NULL, = NULL, NULL }, >=20 > + { L"Overflow interrupt", 4, 36, L"0x%x", NULL, NULL, = NULL, > NULL }, >=20 > + { L"Reserved1", 4, 40, L"0x%x", NULL, NULL, = NULL, NULL }, >=20 > + { L"Overflow interrupt flags", 4, 44, L"0x%x", NULL, NULL, = NULL, > NULL }, >=20 > + { L"Processor affinity", 4, 48, L"0x%x", NULL, NULL, = NULL, > NULL }, >=20 > + { L"Implementation ID", 4, 52, L"0x%x", NULL, NULL, = NULL, > NULL } >=20 > +}; >=20 > + >=20 > +/** >=20 > + This function parses the ACPI APMT table. >=20 > + When trace is enabled this function parses the APMT table and >=20 > + traces the ACPI table fields. >=20 > + >=20 > + This function also performs validation of the ACPI table fields. >=20 > + >=20 > + @param [in] Trace If TRUE, trace the ACPI fields. >=20 > + @param [in] Ptr Pointer to the start of the buffer. >=20 > + @param [in] AcpiTableLength Length of the ACPI table. >=20 > + @param [in] AcpiTableRevision Revision of the ACPI table. >=20 > +**/ >=20 > +VOID >=20 > +EFIAPI >=20 > +ParseAcpiApmt ( >=20 > + IN BOOLEAN Trace, >=20 > + IN UINT8 *Ptr, >=20 > + IN UINT32 AcpiTableLength, >=20 > + IN UINT8 AcpiTableRevision >=20 > + ) >=20 > +{ >=20 > + UINT32 Offset; >=20 > + >=20 > + if (!Trace) { >=20 > + return; >=20 > + } >=20 > + >=20 > + ParseAcpi ( >=20 > + Trace, >=20 > + 0, >=20 > + "APMT", >=20 > + Ptr, >=20 > + AcpiTableLength, >=20 > + PARSER_PARAMS (ApmtParser) >=20 > + ); >=20 > + Offset =3D sizeof (EFI_ACPI_DESCRIPTION_HEADER); >=20 > + >=20 > + while (Offset < AcpiTableLength) { >=20 > + ParseAcpi ( >=20 > + Trace, >=20 > + 2, >=20 > + "Arm PMU node", >=20 > + Ptr + Offset, >=20 > + (AcpiTableLength - Offset), >=20 > + PARSER_PARAMS (ArmPmuNodeParser) >=20 > + ); >=20 > + if (NodeLength =3D=3D NULL) { >=20 > + Print ( >=20 > + L"ERROR: Insufficient remaining table buffer length to read the = " \ >=20 > + L"Node structure. Length =3D %d.\n", >=20 > + (AcpiTableLength - Offset) >=20 > + ); >=20 > + IncrementErrorCount (); >=20 > + break; >=20 > + } >=20 > + >=20 > + Offset +=3D *NodeLength; >=20 > + } >=20 > +} >=20 > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.c > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.c >=20 > index 09bdddb56e..53f06fc757 100644 >=20 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.c >=20 > +++ > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.c >=20 > @@ -48,6 +48,7 @@ STATIC >=20 > CONST >=20 > ACPI_TABLE_PARSER ParserList[] =3D { >=20 > { EFI_ACPI_6_3_ARM_ERROR_SOURCE_TABLE_SIGNATURE, > ParseAcpiAest }, >=20 > + > { EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNAT > URE, ParseAcpiApmt }, >=20 > { EFI_ACPI_6_2_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE, > ParseAcpiBgrt }, >=20 > { EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, > ParseAcpiDbg2 }, >=20 >=20 > { EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATUR > E, >=20 > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.inf > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.inf >=20 > index 63fc5a1281..b03ec1a31b 100644 >=20 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.inf >=20 > +++ > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.inf >=20 > @@ -28,6 +28,7 @@ >=20 > AcpiViewConfig.c >=20 > AcpiViewConfig.h >=20 > Parsers/Aest/AestParser.c >=20 > + Parsers/Apmt/ApmtParser.c >=20 > Parsers/Bgrt/BgrtParser.c >=20 > Parsers/Dbg2/Dbg2Parser.c >=20 > Parsers/Dsdt/DsdtParser.c >=20 > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.uni > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.uni >=20 > index 393110e0ee..e4a9dd5b40 100644 >=20 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.uni >=20 > +++ > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewComm > andLib.uni >=20 > @@ -80,6 +80,7 @@ >=20 > " Extra A. Particular types:\r\n" >=20 > " AEST - Arm Error Source Table\r\n" >=20 > " APIC - Multiple APIC Description Table (MADT)\r\n" >=20 > +" APMT - Arm Performance Monitoring Unit Table\r\n" >=20 > " BGRT - Boot Graphics Resource Table\r\n" >=20 > " DBG2 - Debug Port Table 2\r\n" >=20 > " DSDT - Differentiated System Description Table\r\n" >=20 > -- >=20 > 2.25.1 >=20 >=20