From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (NAM11-BN8-obe.outbound.protection.outlook.com [40.107.236.40]) by mx.groups.io with SMTP id smtpd.web11.20015.1669833147169617238 for ; Wed, 30 Nov 2022 10:32:27 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=fCUKUVDi; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.236.40, mailfrom: jeshuas@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HJdOUIJXmNNKC0OGMTM0pVjTuQ5rPJ46ISJXi9t8E47RJ3SYDPUUmglCuzN4Mge/hbObxm7UJpw57Qfu7AGtmhNF6tOwZ05/64zu6JTr7IRlxlQKc5Jf3EgLQ1A8RLm8WnSP+0ck4k7J/nvZg3vxO4M6dmqaW7Dj7sGgQQTrvYoBnAj/Lzo+aiYRVpFJ8dxuNqbQ3rRDBJz8F+wb4iZH5P/Ri7AYPl+lOkTgJPrkJK4T3YyeFbI30wugUOfOIvx32jcqngyhscEKSVirSKDM7MhUicd+x/5CFRarz6+Qe/kqBg02b6wMTelSojgcloqwRDA1dHIvkzq7S1m3Mmd6bg== 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=6xBMwxMEa/6ZPbDBaMxFc3A3mOT0h+BNlpImXhGiSV0=; b=Sjb65pue/qiFzyTebejGchhiUzPvZfyOrBquDIkBS4WEWfosjpq8M8/cb0p5459yoIjXMDwfl25zRW6xi5SrhN9Eq5kYpP+sl7WCtlcdR1AZtKycdMtW/ZKyfdqmGwbL9RYiIFRB5NQkXXJlKctCy0eLkc/WBjMgvAcI2UUF7g3PVw4oMfX6JI0pwCN1DzV/CcSR2L3FSb2vTIgQV12ntUoqpawVSmfNQ6vt/fYPtp7ssN8QL70SGOkc2q75qlkblxJxiJwEiM3YhTqsXLgccvzQWlTRaI6wuqzYt20+kxi3WmOkPkFG0oXDofQmMpcxnyR9bJujo78RHqzxtTOyOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6xBMwxMEa/6ZPbDBaMxFc3A3mOT0h+BNlpImXhGiSV0=; b=fCUKUVDi+BYL/0GH9LEcC/NwyHBtEqRMQItdlbK4KJNBdkQCCmfo/vlKs6ddu6c2MlH51TRx/8OP61cTVsDJqdTOJW6WcxhwHmO4cfQvCOhXOOoSK7eoSo8kqPGe9uzMZjY/nhSmRh97mHRPTgWHCxfGvw1SHHZydkfF4iifPDejVOkoxPmo/W5OdMvsAM7/e/sb3/cSoiMrVcEqp6D4j3J7R3kkGHiDWpSCd10cfixAacgO5EevzT1CmJOMWS3b+dtJTtYSpl7QYgbUiJYWa27M/GSEpIQdoxqatHWN46OlmBIDbm975bufVEMJOG+qdh7iRnma65FXfkmJrZiahg== Received: from MW4PR04CA0128.namprd04.prod.outlook.com (2603:10b6:303:84::13) by DM4PR12MB5038.namprd12.prod.outlook.com (2603:10b6:5:389::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.23; Wed, 30 Nov 2022 18:32:24 +0000 Received: from CO1NAM11FT009.eop-nam11.prod.protection.outlook.com (2603:10b6:303:84:cafe::2d) by MW4PR04CA0128.outlook.office365.com (2603:10b6:303:84::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.23 via Frontend Transport; Wed, 30 Nov 2022 18:32:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by CO1NAM11FT009.mail.protection.outlook.com (10.13.175.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.18 via Frontend Transport; Wed, 30 Nov 2022 18:32:24 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Wed, 30 Nov 2022 10:32:12 -0800 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Wed, 30 Nov 2022 10:32:12 -0800 Received: from build-jeshuas-20220912T090427831.internal (10.127.8.9) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server id 15.2.986.36 via Frontend Transport; Wed, 30 Nov 2022 10:32:11 -0800 From: jeshuas@nvidia.com To: CC: , , Jeshua Smith Subject: [PATCH] ShellPkg/AcpiView: ERST Parser Date: Wed, 30 Nov 2022 18:31:14 +0000 Message-ID: <998e19f8df9167c20b4b7bfe5e9ecac0093fc132.1669832339.git.jeshuas@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-NVConfidentiality: public Return-Path: jeshuas@nvidia.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT009:EE_|DM4PR12MB5038:EE_ X-MS-Office365-Filtering-Correlation-Id: 3834326f-31d0-4e82-c5f5-08dad30139fa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kzS+FiooC/XuN0zza4RS3c1RHicBrl93lIaFmWRuXE1aUEI3D3CNQTCTD5dQZdWD1ESJgBDMKyWjTNF4EaShQCgY/GYtVxusThI1z1sTb3nANU11njnJ3D4qMUA1mjiX+rlf7MAAyTloMswc5W1Pp+liOrysoPVj5FbN/uIAAH6a79cSrNuFlYwHh5FkyXiMOJ1p3czoIyCiVoClIoe2/1xJioSWz7wq1FyioBdyTIP0yR0dEbllXbbc7t/LRd/3bdCHfDWy0ZWp8S17kVB9uHlm84lRJlTbPHeu/JDWt6bfyOn2+UNScbM1r5KSSGGNUgzg88GvKvViGuIA3OhHAZAg3ibRKD3C8MrB23vEr5kCO473GPhHTtf0WBCx425U8ls8fouRW4jg0qQB+xNWD7ArZE5vrzZ2Wf+tofasUAjhbf32xem7Fbfq2ZE81gP+VzQ+nZHaCA61SN0ppHSFh5q5fJI6X30Ld/sQvxMvA5mxngD6MM0MX6pPPuSQeYIDrpahzWOPoP6wE+A/8ew22iQY5P/LqAUuZmufPf/Ki2Tvp22OPzRKXJoWCMBS4C89cVlvslc11YdOZixNQPS9PTkZWbNHxrU71VW62EWJtkEa1ZcLu0F3mHlhP1NVlFICFdhpxOsTqYkj2J0xh3QAhOffc77+wu68IpCxCDt7/XpUesoBxH9dYlWPJ1wciQiYR9loG7Wd5UU0tiNQqj2cdw== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230022)(4636009)(136003)(39860400002)(376002)(396003)(346002)(451199015)(46966006)(40470700004)(36840700001)(6916009)(2906002)(30864003)(7636003)(41300700001)(54906003)(36756003)(4326008)(36860700001)(8676002)(316002)(5660300002)(8936002)(70586007)(186003)(19627235002)(86362001)(26005)(70206006)(2616005)(82310400005)(336012)(107886003)(478600001)(40480700001)(356005)(82740400003)(83380400001)(40460700003)(47076005)(426003);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2022 18:32:24.6104 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3834326f-31d0-4e82-c5f5-08dad30139fa X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT009.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5038 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Add a new parser for the Error Record Serialization Table.=0D The ERST table describes how an OS can save and retrieve=0D hardware error information to and from a persistent store.=0D =0D Signed-off-by: Jeshua Smith =0D ---=0D .../UefiShellAcpiViewCommandLib/AcpiParser.h | 22 ++=0D .../Parsers/Erst/ErstParser.c | 278 ++++++++++++++++++=0D .../UefiShellAcpiViewCommandLib.c | 2 +=0D .../UefiShellAcpiViewCommandLib.inf | 2 +=0D 4 files changed, 304 insertions(+)=0D create mode 100644 ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Er= st/ErstParser.c=0D =0D diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/Sh= ellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h=0D index db8c88f6df..66c992c55c 100644=0D --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h=0D +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h=0D @@ -1,6 +1,7 @@=0D /** @file=0D Header file for ACPI parser=0D =0D + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.=0D Copyright (c) 2016 - 2020, Arm Limited. All rights reserved.=0D Copyright (c) 2022, AMD Incorporated. All rights reserved.=0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D @@ -594,6 +595,27 @@ ParseAcpiDsdt (=0D IN UINT8 AcpiTableRevision=0D );=0D =0D +/**=0D + This function parses the ACPI ERST table.=0D + When trace is enabled this function parses the ERST table and=0D + traces the ACPI table fields.=0D +=0D + This function also performs validation of the ACPI table fields.=0D +=0D + @param [in] Trace If TRUE, trace the ACPI fields.=0D + @param [in] Ptr Pointer to the start of the buffer.=0D + @param [in] AcpiTableLength Length of the ACPI table.=0D + @param [in] AcpiTableRevision Revision of the ACPI table.=0D +**/=0D +VOID=0D +EFIAPI=0D +ParseAcpiErst (=0D + IN BOOLEAN Trace,=0D + IN UINT8 *Ptr,=0D + IN UINT32 AcpiTableLength,=0D + IN UINT8 AcpiTableRevision=0D + );=0D +=0D /**=0D This function parses the ACPI FACS table.=0D When trace is enabled this function parses the FACS table and=0D diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/Erst= Parser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstPa= rser.c=0D new file mode 100644=0D index 0000000000..e2af0c44b4=0D --- /dev/null=0D +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstParser.= c=0D @@ -0,0 +1,278 @@=0D +/** @file=0D + ERST table parser=0D +=0D + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.=0D + Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.=0D + SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D + @par Reference(s):=0D + - ACPI 6.5 Specification - August 2022=0D +**/=0D +=0D +#include =0D +#include =0D +#include "AcpiParser.h"=0D +#include "AcpiTableParser.h"=0D +=0D +// Local variables=0D +STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;=0D +STATIC UINT32 *InstructionEntryCount;=0D +=0D +/**=0D + An array of strings describing the Erst actions=0D +**/=0D +STATIC CONST CHAR16 *ErstActionTable[] =3D {=0D + L"BEGIN_WRITE_OPERATION",=0D + L"BEGIN_READ_OPERATION",=0D + L"BEGIN_CLEAR_OPERATION",=0D + L"END_OPERATION",=0D + L"SET_RECORD_OFFSET",=0D + L"EXECUTE_OPERATION",=0D + L"CHECK_BUSY_STATUS",=0D + L"GET_COMMAND_STATUS",=0D + L"GET_RECORD_IDENTIFIER",=0D + L"SET_RECORD_IDENTIFIER",=0D + L"GET_RECORD_COUNT",=0D + L"BEGIN_DUMMY_WRITE_OPERATION",=0D + L"RESERVED",=0D + L"GET_ERROR_LOG_ADDRESS_RANGE",=0D + L"GET_ERROR_LOG_ADDRESS_RANGE_LENGTH",=0D + L"GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES",=0D + L"GET_EXECUTE_OPERATION_TIMINGS"=0D +};=0D +=0D +/**=0D + An array of strings describing the Erst instructions=0D +**/=0D +STATIC CONST CHAR16 *ErstInstructionTable[] =3D {=0D + L"READ_REGISTER",=0D + L"READ_REGISTER_VALUE",=0D + L"WRITE_REGISTER",=0D + L"WRITE_REGISTER_VALUE",=0D + L"NOOP",=0D + L"LOAD_VAR1",=0D + L"LOAD_VAR2",=0D + L"STORE_VAR1",=0D + L"ADD",=0D + L"SUBTRACT",=0D + L"ADD_VALUE",=0D + L"SUBTRACT_VALUE",=0D + L"STALL",=0D + L"STALL_WHILE_TRUE",=0D + L"SKIP_NEXT_INSTRUCTION_IF_TRUE",=0D + L"GOTO",=0D + L"SET_SRC_ADDRESS_BASE",=0D + L"SET_DST_ADDRESS_BASE",=0D + L"MOVE_DATA"=0D +};=0D +=0D +/**=0D + Validate Erst action.=0D +=0D + @param [in] Ptr Pointer to the start of the field data.=0D + @param [in] Context Pointer to context specific information e.g. this= =0D + could be a pointer to the ACPI table header.=0D +**/=0D +STATIC=0D +VOID=0D +EFIAPI=0D +ValidateErstAction (=0D + IN UINT8 *Ptr,=0D + IN VOID *Context=0D + )=0D +{=0D + if (*Ptr > EFI_ACPI_6_4_ERST_GET_EXECUTE_OPERATION_TIMINGS) {=0D + IncrementErrorCount ();=0D + Print (L"\nError: 0x%02x is not a valid action encoding", *Ptr);=0D + }=0D +}=0D +=0D +/**=0D + Validate Erst instruction.=0D +=0D + @param [in] Ptr Pointer to the start of the field data.=0D + @param [in] Context Pointer to context specific information e.g. this= =0D + could be a pointer to the ACPI table header.=0D +**/=0D +STATIC=0D +VOID=0D +EFIAPI=0D +ValidateErstInstruction (=0D + IN UINT8 *Ptr,=0D + IN VOID *Context=0D + )=0D +{=0D + if (*Ptr > EFI_ACPI_6_4_ERST_MOVE_DATA) {=0D + IncrementErrorCount ();=0D + Print (L"\nError: 0x%02x is not a valid instruction encoding", *Ptr);= =0D + }=0D +}=0D +=0D +/**=0D + Validate Erst flags.=0D +=0D + @param [in] Ptr Pointer to the start of the field data.=0D + @param [in] Context Pointer to context specific information e.g. this= =0D + could be a pointer to the ACPI table header.=0D +**/=0D +STATIC=0D +VOID=0D +EFIAPI=0D +ValidateErstFlags (=0D + IN UINT8 *Ptr,=0D + IN VOID *Context=0D + )=0D +{=0D + if ((*Ptr & 0xfe) !=3D 0) {=0D + IncrementErrorCount ();=0D + Print (L"\nError: Reserved Flag bits not set to 0");=0D + }=0D +}=0D +=0D +/**=0D + Looks up and prints the string corresponding to the index=0D +=0D + @param [in] Table Lookup table=0D + @param [in] Index Entry to print=0D + @param [in] NumEntries Number of valid entries in the table=0D +**/=0D +STATIC=0D +VOID=0D +EFIAPI=0D +FormatByte (=0D + IN CONST CHAR16 *Table[],=0D + IN UINT8 Index,=0D + IN UINT8 NumEntries=0D + )=0D +{=0D + CONST CHAR16 *String;=0D +=0D + if (Index < NumEntries) {=0D + String =3D Table[Index];=0D + } else {=0D + String =3D L"**INVALID**";=0D + }=0D +=0D + Print (=0D + L"0x%02x (%s)",=0D + Index,=0D + String=0D + );=0D +}=0D +=0D +/**=0D + Prints the Erst Action=0D +=0D + @param [in] Format Optional format string for tracing the data.=0D + @param [in] Ptr Pointer to the Action byte=0D +**/=0D +STATIC=0D +VOID=0D +EFIAPI=0D +DumpErstAction (=0D + IN CONST CHAR16 *Format OPTIONAL,=0D + IN UINT8 *Ptr=0D + )=0D +{=0D + FormatByte (ErstActionTable, *Ptr, ARRAY_SIZE (ErstActionTable));=0D +}=0D +=0D +/**=0D + Prints the Erst Instruction=0D +=0D + @param [in] Format Optional format string for tracing the data.=0D + @param [in] Ptr Pointer to the Instruction byte=0D +**/=0D +STATIC=0D +VOID=0D +EFIAPI=0D +DumpErstInstruction (=0D + IN CONST CHAR16 *Format OPTIONAL,=0D + IN UINT8 *Ptr=0D + )=0D +{=0D + FormatByte (ErstInstructionTable, *Ptr, ARRAY_SIZE (ErstInstructionTable= ));=0D +}=0D +=0D +/**=0D + An ACPI_PARSER array describing the ACPI ERST Table.=0D +**/=0D +STATIC CONST ACPI_PARSER ErstParser[] =3D {=0D + PARSE_ACPI_HEADER (&AcpiHdrInfo),=0D + { L"Serialization Header Size", 4, 36, L"0x%x", NULL, NULL, = NULL, NULL },=0D + { L"Reserved", 4, 40, L"0x%x", NULL, NULL, = NULL, NULL },=0D + { L"Instruction Entry Count", 4, 44, L"0x%x", NULL, (VOID **)&Instru= ctionEntryCount, NULL, NULL }=0D +};=0D +=0D +/**=0D + An ACPI_PARSER array describing the Serialization Instruction Entry stru= cture.=0D +**/=0D +STATIC CONST ACPI_PARSER SerializationInstructionEntryParser[] =3D {=0D + { L"Serialization Action", 1, 0, L"0x%x", DumpErstAction, NULL,= ValidateErstAction, NULL },=0D + { L"Instruction", 1, 1, L"0x%x", DumpErstInstruction, NULL,= ValidateErstInstruction, NULL },=0D + { L"Flags", 1, 2, L"0x%x", NULL, NULL,= ValidateErstFlags, NULL },=0D + { L"Reserved", 1, 3, L"0x%x", NULL, NULL,= NULL, NULL },=0D + { L"Register Region", 12, 4, NULL, DumpGas, NULL,= NULL, NULL },=0D + { L"Value", 8, 16, L"0x%llx", NULL, NULL,= NULL, NULL },=0D + { L"Mask", 8, 24, L"0x%llx", NULL, NULL,= NULL, NULL }=0D +};=0D +=0D +/**=0D + This function parses the ACPI ERST table.=0D + When trace is enabled this function parses the ERST table and=0D + traces the ACPI table fields.=0D +=0D + This function also performs validation of the ACPI table fields.=0D +=0D + @param [in] Trace If TRUE, trace the ACPI fields.=0D + @param [in] Ptr Pointer to the start of the buffer.=0D + @param [in] AcpiTableLength Length of the ACPI table.=0D + @param [in] AcpiTableRevision Revision of the ACPI table.=0D +**/=0D +VOID=0D +EFIAPI=0D +ParseAcpiErst (=0D + IN BOOLEAN Trace,=0D + IN UINT8 *Ptr,=0D + IN UINT32 AcpiTableLength,=0D + IN UINT8 AcpiTableRevision=0D + )=0D +{=0D + UINT32 Offset;=0D +=0D + if (!Trace) {=0D + return;=0D + }=0D +=0D + Offset =3D ParseAcpi (=0D + Trace,=0D + 0,=0D + "ERST",=0D + Ptr,=0D + AcpiTableLength,=0D + PARSER_PARAMS (ErstParser)=0D + );=0D +=0D + if (sizeof (EFI_ACPI_6_4_ERST_SERIALIZATION_INSTRUCTION_ENTRY)*(*Instruc= tionEntryCount) !=3D (AcpiTableLength - Offset)) {=0D + IncrementErrorCount ();=0D + Print (=0D + L"ERROR: Invalid InstructionEntryCount. " \=0D + L"Count =3D %d. Offset =3D %d. AcpiTableLength =3D %d.\n",=0D + *InstructionEntryCount,=0D + Offset,=0D + AcpiTableLength=0D + );=0D + return;=0D + }=0D +=0D + while (Offset < AcpiTableLength) {=0D + Offset +=3D ParseAcpi (=0D + Trace,=0D + 2,=0D + "Serialization Action",=0D + Ptr + Offset,=0D + (AcpiTableLength - Offset),=0D + PARSER_PARAMS (SerializationInstructionEntryParser)=0D + );=0D + }=0D +}=0D diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiView= CommandLib.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiVi= ewCommandLib.c=0D index 09bdddb56e..d37ad7cacc 100644=0D --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.c=0D +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.c=0D @@ -1,6 +1,7 @@=0D /** @file=0D Main file for 'acpiview' Shell command function.=0D =0D + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.=0D Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
=0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D **/=0D @@ -52,6 +53,7 @@ ACPI_TABLE_PARSER ParserList[] =3D {=0D { EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, = ParseAcpiDbg2 },=0D { EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,=0D ParseAcpiDsdt },=0D + { EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE, = ParseAcpiErst },=0D { EFI_ACPI_6_3_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE, = ParseAcpiFacs },=0D { EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, = ParseAcpiFadt },=0D { EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, = ParseAcpiGtdt },=0D diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiView= CommandLib.inf b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpi= ViewCommandLib.inf=0D index 63fc5a1281..904fea83de 100644=0D --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.inf=0D +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.inf=0D @@ -1,6 +1,7 @@=0D ## @file=0D # Provides Shell 'acpiview' command functions=0D #=0D +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.=0D # Copyright (c) 2016 - 2020, Arm Limited. All rights reserved.
=0D #=0D # SPDX-License-Identifier: BSD-2-Clause-Patent=0D @@ -31,6 +32,7 @@=0D Parsers/Bgrt/BgrtParser.c=0D Parsers/Dbg2/Dbg2Parser.c=0D Parsers/Dsdt/DsdtParser.c=0D + Parsers/Erst/ErstParser.c=0D Parsers/Facs/FacsParser.c=0D Parsers/Fadt/FadtParser.c=0D Parsers/Gtdt/GtdtParser.c=0D -- =0D 2.25.1=0D =0D