From nobody Sat Apr 20 04:53:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+96744+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1669833250157974.9737230641714; Wed, 30 Nov 2022 10:34:10 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id bI6mYY1788612xYpPt3QduYo; Wed, 30 Nov 2022 10:34:09 -0800 X-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 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 X-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 X-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 (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+96744+1787277+3901457@groups.io; helo=mail02.groups.io; 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 X-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 X-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 X-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 X-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: "Jeshua Smith via groups.io" To: CC: , , Jeshua Smith Subject: [edk2-devel] [PATCH] ShellPkg/AcpiView: ERST Parser Date: Wed, 30 Nov 2022 18:31:14 +0000 Message-ID: <998e19f8df9167c20b4b7bfe5e9ecac0093fc132.1669832339.git.jeshuas@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public 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-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-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 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,jeshuas@nvidia.com X-Gm-Message-State: jIZ88G8MoS6W5WwO9bgj9o1Kx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1669833249; bh=8f4jCpPv1330ZVqm9Xkc22jrMenpdoBb47vK3VtNlQ8=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=OANSoURpVyS5PedDdwm1ER9oJzdPDQfsAJibITSDiXPcAZt/fbFTh7fhGenP6HXsbvg HTUE76VlZw0ygbEm/lS4QagA+jge8j7Bepas83xmpvXuU1gtE6jPTMPb2w8UMeLf+nD45 doE5xaQpOumpR5kSvlzaoeiE7+fy5Di2maE= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1669833250865100001 Content-Type: text/plain; charset="utf-8" Add a new parser for the Error Record Serialization Table. The ERST table describes how an OS can save and retrieve hardware error information to and from a persistent store. Signed-off-by: Jeshua Smith Reviewed-by: Zhichao Gao --- .../UefiShellAcpiViewCommandLib/AcpiParser.h | 22 ++ .../Parsers/Erst/ErstParser.c | 278 ++++++++++++++++++ .../UefiShellAcpiViewCommandLib.c | 2 + .../UefiShellAcpiViewCommandLib.inf | 2 + 4 files changed, 304 insertions(+) create mode 100644 ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Er= st/ErstParser.c diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/Sh= ellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h index db8c88f6df..66c992c55c 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h @@ -1,6 +1,7 @@ /** @file Header file for ACPI parser =20 + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. Copyright (c) 2016 - 2020, Arm Limited. All rights reserved. Copyright (c) 2022, AMD Incorporated. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @@ -594,6 +595,27 @@ ParseAcpiDsdt ( IN UINT8 AcpiTableRevision ); =20 +/** + This function parses the ACPI ERST table. + When trace is enabled this function parses the ERST 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 +ParseAcpiErst ( + IN BOOLEAN Trace, + IN UINT8 *Ptr, + IN UINT32 AcpiTableLength, + IN UINT8 AcpiTableRevision + ); + /** This function parses the ACPI FACS table. When trace is enabled this function parses the FACS table and diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/Erst= Parser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstPa= rser.c new file mode 100644 index 0000000000..e2af0c44b4 --- /dev/null +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Erst/ErstParser.c @@ -0,0 +1,278 @@ +/** @file + ERST table parser + + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Reference(s): + - ACPI 6.5 Specification - August 2022 +**/ + +#include +#include +#include "AcpiParser.h" +#include "AcpiTableParser.h" + +// Local variables +STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo; +STATIC UINT32 *InstructionEntryCount; + +/** + An array of strings describing the Erst actions +**/ +STATIC CONST CHAR16 *ErstActionTable[] =3D { + L"BEGIN_WRITE_OPERATION", + L"BEGIN_READ_OPERATION", + L"BEGIN_CLEAR_OPERATION", + L"END_OPERATION", + L"SET_RECORD_OFFSET", + L"EXECUTE_OPERATION", + L"CHECK_BUSY_STATUS", + L"GET_COMMAND_STATUS", + L"GET_RECORD_IDENTIFIER", + L"SET_RECORD_IDENTIFIER", + L"GET_RECORD_COUNT", + L"BEGIN_DUMMY_WRITE_OPERATION", + L"RESERVED", + L"GET_ERROR_LOG_ADDRESS_RANGE", + L"GET_ERROR_LOG_ADDRESS_RANGE_LENGTH", + L"GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES", + L"GET_EXECUTE_OPERATION_TIMINGS" +}; + +/** + An array of strings describing the Erst instructions +**/ +STATIC CONST CHAR16 *ErstInstructionTable[] =3D { + L"READ_REGISTER", + L"READ_REGISTER_VALUE", + L"WRITE_REGISTER", + L"WRITE_REGISTER_VALUE", + L"NOOP", + L"LOAD_VAR1", + L"LOAD_VAR2", + L"STORE_VAR1", + L"ADD", + L"SUBTRACT", + L"ADD_VALUE", + L"SUBTRACT_VALUE", + L"STALL", + L"STALL_WHILE_TRUE", + L"SKIP_NEXT_INSTRUCTION_IF_TRUE", + L"GOTO", + L"SET_SRC_ADDRESS_BASE", + L"SET_DST_ADDRESS_BASE", + L"MOVE_DATA" +}; + +/** + Validate Erst action. + + @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 +ValidateErstAction ( + IN UINT8 *Ptr, + IN VOID *Context + ) +{ + if (*Ptr > EFI_ACPI_6_4_ERST_GET_EXECUTE_OPERATION_TIMINGS) { + IncrementErrorCount (); + Print (L"\nError: 0x%02x is not a valid action encoding", *Ptr); + } +} + +/** + Validate Erst instruction. + + @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 +ValidateErstInstruction ( + IN UINT8 *Ptr, + IN VOID *Context + ) +{ + if (*Ptr > EFI_ACPI_6_4_ERST_MOVE_DATA) { + IncrementErrorCount (); + Print (L"\nError: 0x%02x is not a valid instruction encoding", *Ptr); + } +} + +/** + Validate Erst flags. + + @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 +ValidateErstFlags ( + IN UINT8 *Ptr, + IN VOID *Context + ) +{ + if ((*Ptr & 0xfe) !=3D 0) { + IncrementErrorCount (); + Print (L"\nError: Reserved Flag bits not set to 0"); + } +} + +/** + Looks up and prints the string corresponding to the index + + @param [in] Table Lookup table + @param [in] Index Entry to print + @param [in] NumEntries Number of valid entries in the table +**/ +STATIC +VOID +EFIAPI +FormatByte ( + IN CONST CHAR16 *Table[], + IN UINT8 Index, + IN UINT8 NumEntries + ) +{ + CONST CHAR16 *String; + + if (Index < NumEntries) { + String =3D Table[Index]; + } else { + String =3D L"**INVALID**"; + } + + Print ( + L"0x%02x (%s)", + Index, + String + ); +} + +/** + Prints the Erst Action + + @param [in] Format Optional format string for tracing the data. + @param [in] Ptr Pointer to the Action byte +**/ +STATIC +VOID +EFIAPI +DumpErstAction ( + IN CONST CHAR16 *Format OPTIONAL, + IN UINT8 *Ptr + ) +{ + FormatByte (ErstActionTable, *Ptr, ARRAY_SIZE (ErstActionTable)); +} + +/** + Prints the Erst Instruction + + @param [in] Format Optional format string for tracing the data. + @param [in] Ptr Pointer to the Instruction byte +**/ +STATIC +VOID +EFIAPI +DumpErstInstruction ( + IN CONST CHAR16 *Format OPTIONAL, + IN UINT8 *Ptr + ) +{ + FormatByte (ErstInstructionTable, *Ptr, ARRAY_SIZE (ErstInstructionTable= )); +} + +/** + An ACPI_PARSER array describing the ACPI ERST Table. +**/ +STATIC CONST ACPI_PARSER ErstParser[] =3D { + PARSE_ACPI_HEADER (&AcpiHdrInfo), + { L"Serialization Header Size", 4, 36, L"0x%x", NULL, NULL, = NULL, NULL }, + { L"Reserved", 4, 40, L"0x%x", NULL, NULL, = NULL, NULL }, + { L"Instruction Entry Count", 4, 44, L"0x%x", NULL, (VOID **)&Instru= ctionEntryCount, NULL, NULL } +}; + +/** + An ACPI_PARSER array describing the Serialization Instruction Entry stru= cture. +**/ +STATIC CONST ACPI_PARSER SerializationInstructionEntryParser[] =3D { + { L"Serialization Action", 1, 0, L"0x%x", DumpErstAction, NULL,= ValidateErstAction, NULL }, + { L"Instruction", 1, 1, L"0x%x", DumpErstInstruction, NULL,= ValidateErstInstruction, NULL }, + { L"Flags", 1, 2, L"0x%x", NULL, NULL,= ValidateErstFlags, NULL }, + { L"Reserved", 1, 3, L"0x%x", NULL, NULL,= NULL, NULL }, + { L"Register Region", 12, 4, NULL, DumpGas, NULL,= NULL, NULL }, + { L"Value", 8, 16, L"0x%llx", NULL, NULL,= NULL, NULL }, + { L"Mask", 8, 24, L"0x%llx", NULL, NULL,= NULL, NULL } +}; + +/** + This function parses the ACPI ERST table. + When trace is enabled this function parses the ERST 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 +ParseAcpiErst ( + IN BOOLEAN Trace, + IN UINT8 *Ptr, + IN UINT32 AcpiTableLength, + IN UINT8 AcpiTableRevision + ) +{ + UINT32 Offset; + + if (!Trace) { + return; + } + + Offset =3D ParseAcpi ( + Trace, + 0, + "ERST", + Ptr, + AcpiTableLength, + PARSER_PARAMS (ErstParser) + ); + + if (sizeof (EFI_ACPI_6_4_ERST_SERIALIZATION_INSTRUCTION_ENTRY)*(*Instruc= tionEntryCount) !=3D (AcpiTableLength - Offset)) { + IncrementErrorCount (); + Print ( + L"ERROR: Invalid InstructionEntryCount. " \ + L"Count =3D %d. Offset =3D %d. AcpiTableLength =3D %d.\n", + *InstructionEntryCount, + Offset, + AcpiTableLength + ); + return; + } + + while (Offset < AcpiTableLength) { + Offset +=3D ParseAcpi ( + Trace, + 2, + "Serialization Action", + Ptr + Offset, + (AcpiTableLength - Offset), + PARSER_PARAMS (SerializationInstructionEntryParser) + ); + } +} diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiView= CommandLib.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiVi= ewCommandLib.c index 09bdddb56e..d37ad7cacc 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.c @@ -1,6 +1,7 @@ /** @file Main file for 'acpiview' Shell command function. =20 + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -52,6 +53,7 @@ ACPI_TABLE_PARSER ParserList[] =3D { { EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, = ParseAcpiDbg2 }, { EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, ParseAcpiDsdt }, + { EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE, = ParseAcpiErst }, { EFI_ACPI_6_3_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE, = ParseAcpiFacs }, { EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, = ParseAcpiFadt }, { EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, = ParseAcpiGtdt }, diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiView= CommandLib.inf b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpi= ViewCommandLib.inf index 63fc5a1281..904fea83de 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.inf +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommand= Lib.inf @@ -1,6 +1,7 @@ ## @file # Provides Shell 'acpiview' command functions # +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. # Copyright (c) 2016 - 2020, Arm Limited. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent @@ -31,6 +32,7 @@ Parsers/Bgrt/BgrtParser.c Parsers/Dbg2/Dbg2Parser.c Parsers/Dsdt/DsdtParser.c + Parsers/Erst/ErstParser.c Parsers/Facs/FacsParser.c Parsers/Fadt/FadtParser.c Parsers/Gtdt/GtdtParser.c --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#96744): https://edk2.groups.io/g/devel/message/96744 Mute This Topic: https://groups.io/mt/95364689/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-