From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 980E094132F for ; Tue, 20 Feb 2024 06:49:01 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=WGZPPOpsxttEejZVohCvDHz3GZSKmArOzP6tZdLQLmA=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:Received-SPF:From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1708411740; v=1; b=jGLtMNCZ/tH4D5LShLCa1necc6rVjbzN5t7dVPTz3BjzLnPHmv+GZ+E3sBvm+mK6d7IaQx/o 47A14twvkw8tCNmyEK09/oK3MrEdPms0HLdazNJWXET4LJabwTtB4c2izEW03DB3mAtS/xEZnyA pnEntn+It6UzAmOj41bLnp/c= X-Received: by 127.0.0.2 with SMTP id PtDaYY7687511x3xwMQePFzw; Mon, 19 Feb 2024 22:49:00 -0800 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (NAM11-BN8-obe.outbound.protection.outlook.com [40.107.236.41]) by mx.groups.io with SMTP id smtpd.web11.8174.1708411739357678660 for ; Mon, 19 Feb 2024 22:48:59 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cZ3nLcNzDFmx3vxqjs3wvvCfWztjLy37MDt1bcULYlFD3KFqCmtLTlaC2eGoHiQ+3zGKHdlTNlPMjiTLthCGWTm7MdCEb2oRjQiM9hBn1Oco6WrKNY4SGoqgJmBmS4ImJXaRyVao/NZ3wSMOMjXkx/LW9wIuhaKely9KmW5ry9aBe9VKvJrggLNmLTWZ2vKTqNW+y4pF0t4agEdcwpPrwdZ76hM01MY4I0v8D3LiSumffD+d0RYSNL1V914rrLlshPSBn+/FnSDF9Z3YwT6g5enci+qJUUPAw+IjINnv+wdjDgGZlHG+yeUaTMYptRPeOQXOnrAslwMJTScd6xUcOg== 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=NHrA74FVNER6vKMn7lvBsmsrV8h5OLBbK+ybQ5CMgtA=; b=Rbsv1ks63UAfJ37nDN3oqHqIbXT3WWrfVpfv8VpuOXcMrVvboRhpvQ0VMUB4LGb+kcxfBh3iQIblHBDNBS+5us0VDkyJxZOgENGuIRyk4t0Vz4Eu/2o9ZAVLAxwVM8f9B4kYIaFanCPBVEPiXswfP5z3Jg3IddS1ze4S3aKkI71ukmblvqD6NX+/7YYok5SmSC1WKHUTvaPZnQ20AEodhdiqSfM06hQXDms0DO6G7IhgKyZo70d628Y12mhLjHWaGUSpEWZqzk613iTsv0pTeHPgdluceaArDBYMW1yRN5dLfrYbs0iiDwdChqTcZgWfKi+hk4WzIC71/EWL5/04gQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) X-Received: from DM6PR11CA0059.namprd11.prod.outlook.com (2603:10b6:5:14c::36) by MN0PR12MB6004.namprd12.prod.outlook.com (2603:10b6:208:380::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.17; Tue, 20 Feb 2024 06:48:55 +0000 X-Received: from DS3PEPF000099D7.namprd04.prod.outlook.com (2603:10b6:5:14c:cafe::72) by DM6PR11CA0059.outlook.office365.com (2603:10b6:5:14c::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.39 via Frontend Transport; Tue, 20 Feb 2024 06:48:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C X-Received: from SATLEXMB04.amd.com (165.204.84.17) by DS3PEPF000099D7.mail.protection.outlook.com (10.167.17.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7292.25 via Frontend Transport; Tue, 20 Feb 2024 06:48:55 +0000 X-Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 20 Feb 2024 00:48:54 -0600 X-Received: from BLR-LAB-SFW01.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Tue, 20 Feb 2024 00:48:53 -0600 From: "Abdul Lateef Attar via groups.io" To: CC: Abdul Lateef Attar , Sami Mujawar , Pierre Gondois Subject: [edk2-devel] [PATCH v1 2/3] DynamicTablesPkg: Adds ACPI HPET Table generator Date: Tue, 20 Feb 2024 12:18:41 +0530 Message-ID: <2990ed3964382d88df2aed092a25fc796c5705b5.1708411357.git.AbdulLateef.Attar@amd.com> In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099D7:EE_|MN0PR12MB6004:EE_ X-MS-Office365-Filtering-Correlation-Id: 7707c216-8242-48a7-b89f-08dc31e001f4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: K/IlBuvv06alc2IklwaFD02eW1f3vz8hQZ6QV6Kf+aAiNMxHOqs+WoySNcnpansNk52badRTv3JMkHfHquPDinzS4Y8du1a9+p8faq8sktGeyBBiHC/qQQkjrT9AnuatmTT1hgcPEiLGT0C5T/aVD1lLO8IrClbD7rWytup8+mvZ/rKLf0nCEQ8+cACOkYWu9IFmqbONftZetS6r1D8WUql17p6phVEaZLucSPMFJqjY79wMJyz3z/OWdLiKyOYVYSaQI1m2EWTC3KnCf6t3tQ5Vt1NSB+NN0GGJ04vyyK3lkxJ+BWFyoAOeIeolK3THs7f4AGU1DTsqXlcFGuPuezAlQ4pvahsp122G7FpuHtAJXgDb/73QppWyRIfubEWb+gAC8oTwyFNKx2fNxU2SbFyYlQVPAQXeeU4ZItm9j16+Q/smsZ9OW+fy0Azs0k9n60R3+PYWTXEg7vGQ8a03AiJWDgLuhxB+YCvwkQPEOnKk5eMHSFdAt89fd+JZTbNldDtaiUWC81wRRlxWEOPxSybkHShXqRLysA6i+oeyaTdxsW7aGOHyeMioxrs3RJ3nGRL1P7Uuxv9CbX9j6WTzSHjGT9Bzo/sBnbYdYre5QtwizDjRaPbz6PHLpMbg5fCAX0MjsSrYHgQpV7X771RjWU24QhFhGsWRz87Z+Njz/0Y= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Feb 2024 06:48:55.4080 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7707c216-8242-48a7-b89f-08dc31e001f4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099D7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6004 Precedence: Bulk 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,AbdulLateef.Attar@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: ziQdDARt5MDYedRucgnikJOvx7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=jGLtMNCZ; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io From: Abdul Lateef Attar Adds generic ACPI HPET table generator library. Register/Deregister HPET table. Update the HPET table during boot as per specification. Cc: Sami Mujawar Cc: Pierre Gondois Signed-off-by: Abdul Lateef Attar --- DynamicTablesPkg/DynamicTables.dsc.inc | 2 + DynamicTablesPkg/DynamicTablesPkg.ci.yaml | 3 +- DynamicTablesPkg/Include/AcpiTableGenerator.h | 1 + .../Library/Acpi/AcpiHpetLib/AcpiHpetLib.inf | 38 ++++ .../Library/Acpi/AcpiHpetLib/HpetGenerator.c | 208 ++++++++++++++++++ 5 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 DynamicTablesPkg/Library/Acpi/AcpiHpetLib/AcpiHpetLib.i= nf create mode 100644 DynamicTablesPkg/Library/Acpi/AcpiHpetLib/HpetGenerator= .c diff --git a/DynamicTablesPkg/DynamicTables.dsc.inc b/DynamicTablesPkg/Dyna= micTables.dsc.inc index 5ec9ffac06..af70785520 100644 --- a/DynamicTablesPkg/DynamicTables.dsc.inc +++ b/DynamicTablesPkg/DynamicTables.dsc.inc @@ -35,6 +35,7 @@ # Generators # DynamicTablesPkg/Library/Acpi/AcpiFadtLib/AcpiFadtLib.inf + DynamicTablesPkg/Library/Acpi/AcpiHpetLib/AcpiHpetLib.inf =20 # # Dynamic Table Factory Dxe @@ -42,6 +43,7 @@ DynamicTablesPkg/Drivers/DynamicTableFactoryDxe/DynamicTableFactoryDxe.i= nf { NULL|DynamicTablesPkg/Library/Acpi/AcpiFadtLib/AcpiFadtLib.inf + NULL|DynamicTablesPkg/Library/Acpi/AcpiHpetLib/AcpiHpetLib.inf } =20 [Components.ARM, Components.AARCH64] diff --git a/DynamicTablesPkg/DynamicTablesPkg.ci.yaml b/DynamicTablesPkg/D= ynamicTablesPkg.ci.yaml index 1ad5540e24..cacdaa1df6 100644 --- a/DynamicTablesPkg/DynamicTablesPkg.ci.yaml +++ b/DynamicTablesPkg/DynamicTablesPkg.ci.yaml @@ -53,7 +53,8 @@ "EmbeddedPkg/EmbeddedPkg.dec", "DynamicTablesPkg/DynamicTablesPkg.dec", "MdeModulePkg/MdeModulePkg.dec", - "MdePkg/MdePkg.dec" + "MdePkg/MdePkg.dec", + "PcAtChipsetPkg/PcAtChipsetPkg.dec" ], # For host based unit tests "AcceptableDependencies-HOST_APPLICATION":[ diff --git a/DynamicTablesPkg/Include/AcpiTableGenerator.h b/DynamicTablesP= kg/Include/AcpiTableGenerator.h index d0eda011c3..18b5f99f47 100644 --- a/DynamicTablesPkg/Include/AcpiTableGenerator.h +++ b/DynamicTablesPkg/Include/AcpiTableGenerator.h @@ -99,6 +99,7 @@ typedef enum StdAcpiTableId { EStdAcpiTableIdSsdtCpuTopology, ///< SSDT Cpu Topology EStdAcpiTableIdSsdtPciExpress, ///< SSDT Pci Express Gene= rator EStdAcpiTableIdPcct, ///< PCCT Generator + EStdAcpiTableIdHpet, ///< HPET Generator EStdAcpiTableIdMax } ESTD_ACPI_TABLE_ID; =20 diff --git a/DynamicTablesPkg/Library/Acpi/AcpiHpetLib/AcpiHpetLib.inf b/Dy= namicTablesPkg/Library/Acpi/AcpiHpetLib/AcpiHpetLib.inf new file mode 100644 index 0000000000..74a1358ffe --- /dev/null +++ b/DynamicTablesPkg/Library/Acpi/AcpiHpetLib/AcpiHpetLib.inf @@ -0,0 +1,38 @@ +## @file +# HPET Table Generator +# +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION =3D 1.27 + BASE_NAME =3D AcpiHpetLib + FILE_GUID =3D 4E75F653-C356-48B3-B32C-D1B901ECF90A + VERSION_STRING =3D 1.0 + MODULE_TYPE =3D DXE_DRIVER + LIBRARY_CLASS =3D NULL|DXE_DRIVER + CONSTRUCTOR =3D AcpiHpetLibConstructor + DESTRUCTOR =3D AcpiHpetLibDestructor + +[Sources] + HpetGenerator.c + +[Packages] + DynamicTablesPkg/DynamicTablesPkg.dec + EmbeddedPkg/EmbeddedPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + PcAtChipsetPkg/PcAtChipsetPkg.dec + +[LibraryClasses] + BaseLib + DebugLib + IoLib + PcdLib + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId + gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision + gPcAtChipsetPkgTokenSpaceGuid.PcdHpetBaseAddress diff --git a/DynamicTablesPkg/Library/Acpi/AcpiHpetLib/HpetGenerator.c b/Dy= namicTablesPkg/Library/Acpi/AcpiHpetLib/HpetGenerator.c new file mode 100644 index 0000000000..e365746556 --- /dev/null +++ b/DynamicTablesPkg/Library/Acpi/AcpiHpetLib/HpetGenerator.c @@ -0,0 +1,208 @@ +/** @file + HPET Table Generator + + Copyright (c) 2017 - 2023, Arm Limited. All rights reserved. + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Reference(s): + - ACPI 6.5 Specification, Aug 29, 2022 + - HPET spec, version 1.0a + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** The AcpiHpet is a template EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_H= EADER + structure used for generating the HPET Table. +*/ +STATIC +EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_HEADER mAcpiHpet =3D { + ACPI_HEADER ( + EFI_ACPI_6_5_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE, + EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_HEADER, + EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_REVISION + ), + // EventTimerBlockId + 0, + // BaseAddressLower32Bit + { EFI_ACPI_6_5_SYSTEM_MEMORY, 0,0, EFI_ACPI_= RESERVED_BYTE, 0 }, + // HpetNumber + 0, + // MainCounterMinimumClockTickInPeriodicMode + 0, + // PageProtectionAndOemAttribute + EFI_ACPI_NO_PAGE_PROTECTION +}; + +/** Construct the HPET table. + + This function invokes the Configuration Manager protocol interface + to get the required hardware information for generating the ACPI + table. + + If this function allocates any resources then they must be freed + in the FreeXXXXTableResources function. + + @param [in] This Pointer to the table generator. + @param [in] AcpiTableInfo Pointer to the ACPI Table Info. + @param [in] CfgMgrProtocol Pointer to the Configuration Manager + Protocol Interface. + @param [out] Table Pointer to the constructed ACPI Table. + + @retval EFI_SUCCESS Table generated successfully. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object was not found. + @retval EFI_BAD_BUFFER_SIZE The size returned by the Configuration + Manager is less than the Object size for t= he + requested object. +**/ +STATIC +EFI_STATUS +BuildHpetTable ( + IN CONST ACPI_TABLE_GENERATOR *CONST This, + IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST AcpiTableInfo, + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, + OUT EFI_ACPI_DESCRIPTION_HEADER **CONST Table + ) +{ + EFI_STATUS Status; + + ASSERT (This !=3D NULL); + ASSERT (AcpiTableInfo !=3D NULL); + ASSERT (CfgMgrProtocol !=3D NULL); + ASSERT (Table !=3D NULL); + ASSERT (AcpiTableInfo->TableGeneratorId =3D=3D This->GeneratorID); + ASSERT (AcpiTableInfo->AcpiTableSignature =3D=3D This->AcpiTableSignatur= e); + + if ((AcpiTableInfo->AcpiTableRevision < This->MinAcpiTableRevision) || + (AcpiTableInfo->AcpiTableRevision > This->AcpiTableRevision)) + { + DEBUG (( + DEBUG_ERROR, + "ERROR: HPET: Requested table revision =3D %d, is not supported." + "Supported table revision: Minimum =3D %d, Maximum =3D %d\n", + AcpiTableInfo->AcpiTableRevision, + This->MinAcpiTableRevision, + This->AcpiTableRevision + )); + return EFI_INVALID_PARAMETER; + } + + *Table =3D NULL; + + Status =3D AddAcpiHeader ( + CfgMgrProtocol, + This, + (EFI_ACPI_DESCRIPTION_HEADER *)&mAcpiHpet, + AcpiTableInfo, + sizeof (EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_HEADER) + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "ERROR: HPET: Failed to add ACPI header. Status =3D %r\n", + Status + )); + return Status; + } + + mAcpiHpet.BaseAddressLower32Bit.Address =3D PcdGet32 (PcdHpe= tBaseAddress); + mAcpiHpet.EventTimerBlockId =3D MmioRead32 (PcdG= et32 (PcdHpetBaseAddress) + HPET_GENERAL_CAPABILITIES_ID_OFFSET); + mAcpiHpet.MainCounterMinimumClockTickInPeriodicMode =3D (UINT16)MmioRead= 32 (PcdGet32 (PcdHpetBaseAddress) + HPET_GENERAL_CAPABILITIES_ID_OFFSET + 4= ); + *Table =3D (EFI_ACPI_DESCRI= PTION_HEADER *)&mAcpiHpet; + + return Status; +} + +/** The interface for the HPET Table Generator. +*/ +STATIC +CONST +ACPI_TABLE_GENERATOR mHpetGenerator =3D { + // Generator ID + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdHpet), + // Generator Description + L"ACPI.STD.HPET.GENERATOR", + // ACPI Table Signature + EFI_ACPI_6_5_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE, + // ACPI Table Revision supported by this Generator + EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_REVISION, + // Minimum supported ACPI Table Revision + EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_REVISION, + // Creator ID + FixedPcdGet32 (PcdAcpiDefaultCreatorId), + // Creator Revision + FixedPcdGet32 (PcdAcpiDefaultCreatorRevision), + // Build Table function + BuildHpetTable, + // No additional resources are allocated by the generator. + // Hence the Free Resource function is not required. + NULL, + // Extended build function not needed + NULL, + // Extended build function not implemented by the generator. + // Hence extended free resource function is not required. + NULL +}; + +/** Register the Generator with the ACPI Table Factory. + + @param [in] ImageHandle The handle to the image. + @param [in] SystemTable Pointer to the System Table. + + @retval EFI_SUCCESS The Generator is registered. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_ALREADY_STARTED The Generator for the Table ID + is already registered. +**/ +EFI_STATUS +EFIAPI +AcpiHpetLibConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + Status =3D RegisterAcpiTableGenerator (&mHpetGenerator); + DEBUG ((DEBUG_INFO, "HPET: Register Generator. Status =3D %r\n", Status)= ); + ASSERT_EFI_ERROR (Status); + return Status; +} + +/** Deregister the Generator from the ACPI Table Factory. + + @param [in] ImageHandle The handle to the image. + @param [in] SystemTable Pointer to the System Table. + + @retval EFI_SUCCESS The Generator is deregistered. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The Generator is not registered. +**/ +EFI_STATUS +EFIAPI +AcpiHpetLibDestructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + Status =3D DeregisterAcpiTableGenerator (&mHpetGenerator); + DEBUG ((DEBUG_INFO, "HPET: Deregister Generator. Status =3D %r\n", Statu= s)); + ASSERT_EFI_ERROR (Status); + return Status; +} --=20 2.34.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 (#115633): https://edk2.groups.io/g/devel/message/115633 Mute This Topic: https://groups.io/mt/104463460/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-