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 984D494197E for ; Thu, 21 Mar 2024 16:00:33 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=XyDoR1OIGERqKAhTl2TEKCDMvGwPM5M//8dZtYYYGPU=; c=relaxed/simple; d=groups.io; h=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:Resent-Date:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20240206; t=1711036832; v=1; b=anT2nVufhpi5dvT/PveV3M+zyXLpvydPwBwd+NSOdtTxilUgDooCUlE6r8avIBn3kVwt0kI6 jLTyZcprxwwjl7O6foXZdkixuzcpoEg8d+x62aq/utCFs3cAsYUYpgz2ESygynT8vuk6HhMvBu1 2AzbfB1s4t4CT3EzNPemrvw5JpRLsZ3qyxU07hTIuG1Suq/gK78LDzg88jI0wRGmJxlRSyIzCwj uaWWzpgMkgjpZ2wwBAwHThu5YKf3kdK+tWpv1dwTB1CFD6JU9FRZB6ohmsykbgm9/OqOMgRCJwy 5xpm1ZW3PHL3+Fd1NhGAStr8nIisx2Dt2my372m6fkLfA== X-Received: by 127.0.0.2 with SMTP id KnEEYY7687511xFwLaHAqJeh; Thu, 21 Mar 2024 09:00:32 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.580.1711036831681429993 for ; Thu, 21 Mar 2024 09:00:31 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A6DDB1007; Thu, 21 Mar 2024 09:01:05 -0700 (PDT) X-Received: from e126645.nice.arm.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 7666D3F67D; Thu, 21 Mar 2024 09:00:27 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io Cc: Pierre Gondois , Sami Mujawar , Pierre Gondois , Yeo Reum Yun , Sunil V L , AbdulLateef Attar , Jeshua Smith , Jeff Brasen , Girish Mahadevan , Leif Lindholm , Meenakshi Aggarwal Subject: [edk2-devel] [PATCH 06/19] DynamicTablesPkg: Move PCI device Handle object to Arch Common Date: Thu, 21 Mar 2024 16:59:11 +0100 Message-Id: <20240321155924.707272-7-pierre.gondois@arm.com> In-Reply-To: <20240321155924.707272-1-pierre.gondois@arm.com> References: <20240321155924.707272-1-pierre.gondois@arm.com> MIME-Version: 1.0 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 Resent-Date: Thu, 21 Mar 2024 09:00:31 -0700 Reply-To: devel@edk2.groups.io,pierre.gondois@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: XZkOUm6V0ho3BZcPu890r01Jx7686176AA= Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=anT2nVuf; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); 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: Sami Mujawar Move the PCI device Handle object from Arm Namespace to the Arch Common namespace. Correspondingly also update the following modules to reflect the changes introduced by the move: - SRAT generator - ConfigurationManagerObjectParser - Dynamic Plat Repo TokenFixer map. Cc: Pierre Gondois Cc: Yeo Reum Yun Cc: AbdulLateef Attar Cc: Jeshua Smith Cc: Jeff Brasen Cc: Girish Mahadevan Cc: Leif Lindholm Cc: Meenakshi Aggarwal Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois --- .../Include/ArchCommonNameSpaceObjects.h | 20 ++++++++ .../Include/ArmNameSpaceObjects.h | 48 ++++++------------- .../Acpi/Arm/AcpiSratLibArm/SratGenerator.c | 14 +++--- .../DynamicPlatRepoLib/CmObjectTokenFixer.c | 27 +++++------ .../ConfigurationManagerObjectParser.c | 6 +-- DynamicTablesPkg/Readme.md | 30 ++++++------ 6 files changed, 72 insertions(+), 73 deletions(-) diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/Dynami= cTablesPkg/Include/ArchCommonNameSpaceObjects.h index 0b450e8f99c2..230d0bc334c0 100644 --- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h @@ -33,6 +33,7 @@ typedef enum ArchCommonObjectID { EArchCommonObjPciInterruptMapInfo, ///< 10 - Pci Interrupt Ma= p Info=0D EArchCommonObjMemoryAffinityInfo, ///< 11 - Memory Affinity = Info=0D EArchCommonObjDeviceHandleAcpi, ///< 12 - Device Handle Ac= pi=0D + EArchCommonObjDeviceHandlePci, ///< 13 - Device Handle Pc= i=0D EArchCommonObjMax=0D } EARCH_COMMON_OBJECT_ID;=0D =0D @@ -256,6 +257,25 @@ typedef struct CmArchCommonDeviceHandleAcpi { UINT32 Uid;=0D } CM_ARCH_COMMON_DEVICE_HANDLE_ACPI;=0D =0D +/** A structure that describes the PCI Device Handle (Type 1) in the=0D + Generic Initiator Affinity structure in SRAT=0D +=0D + ID: EArchCommonObjDeviceHandlePci=0D +*/=0D +typedef struct CmArchCommonDeviceHandlePci {=0D + /// PCI Segment Number=0D + UINT16 SegmentNumber;=0D +=0D + /// PCI Bus Number - Max 256 busses (Bits 15:8 of BDF)=0D + UINT8 BusNumber;=0D +=0D + /// PCI Device Number - Max 32 devices (Bits 7:3 of BDF)=0D + UINT8 DeviceNumber;=0D +=0D + /// PCI Function Number - Max 8 functions (Bits 2:0 of BDF)=0D + UINT8 FunctionNumber;=0D +} CM_ARCH_COMMON_DEVICE_HANDLE_PCI;=0D +=0D #pragma pack()=0D =0D #endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_=0D diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTables= Pkg/Include/ArmNameSpaceObjects.h index 64c5f2677246..05691e6fcf69 100644 --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h @@ -50,21 +50,20 @@ typedef enum ArmObjectID { EArmObjSmmuInterruptArray, ///< 19 - S= MMU Interrupt Array=0D EArmObjProcHierarchyInfo, ///< 20 - P= rocessor Hierarchy Info=0D EArmObjCacheInfo, ///< 21 - C= ache Info=0D - EArmObjDeviceHandlePci, ///< 22 - D= evice Handle Pci=0D - EArmObjGenericInitiatorAffinityInfo, ///< 23 - G= eneric Initiator Affinity=0D - EArmObjCmn600Info, ///< 24 - C= MN-600 Info=0D - EArmObjLpiInfo, ///< 25 - L= pi Info=0D - EArmObjRmr, ///< 26 - R= eserved Memory Range Node=0D - EArmObjMemoryRangeDescriptor, ///< 27 - M= emory Range Descriptor=0D - EArmObjCpcInfo, ///< 28 - C= ontinuous Performance Control Info=0D - EArmObjPccSubspaceType0Info, ///< 29 - P= cc Subspace Type 0 Info=0D - EArmObjPccSubspaceType1Info, ///< 30 - P= cc Subspace Type 2 Info=0D - EArmObjPccSubspaceType2Info, ///< 31 - P= cc Subspace Type 2 Info=0D - EArmObjPccSubspaceType3Info, ///< 32 - P= cc Subspace Type 3 Info=0D - EArmObjPccSubspaceType4Info, ///< 33 - P= cc Subspace Type 4 Info=0D - EArmObjPccSubspaceType5Info, ///< 34 - P= cc Subspace Type 5 Info=0D - EArmObjEtInfo, ///< 35 - E= mbedded Trace Extension/Module Info=0D - EArmObjPsdInfo, ///< 36 - P= -State Dependency (PSD) Info=0D + EArmObjGenericInitiatorAffinityInfo, ///< 22 - G= eneric Initiator Affinity=0D + EArmObjCmn600Info, ///< 23 - C= MN-600 Info=0D + EArmObjLpiInfo, ///< 24 - L= pi Info=0D + EArmObjRmr, ///< 25 - R= eserved Memory Range Node=0D + EArmObjMemoryRangeDescriptor, ///< 26 - M= emory Range Descriptor=0D + EArmObjCpcInfo, ///< 27 - C= ontinuous Performance Control Info=0D + EArmObjPccSubspaceType0Info, ///< 28 - P= cc Subspace Type 0 Info=0D + EArmObjPccSubspaceType1Info, ///< 29 - P= cc Subspace Type 2 Info=0D + EArmObjPccSubspaceType2Info, ///< 30 - P= cc Subspace Type 2 Info=0D + EArmObjPccSubspaceType3Info, ///< 31 - P= cc Subspace Type 3 Info=0D + EArmObjPccSubspaceType4Info, ///< 32 - P= cc Subspace Type 4 Info=0D + EArmObjPccSubspaceType5Info, ///< 33 - P= cc Subspace Type 5 Info=0D + EArmObjEtInfo, ///< 34 - E= mbedded Trace Extension/Module Info=0D + EArmObjPsdInfo, ///< 35 - P= -State Dependency (PSD) Info=0D EArmObjMax=0D } EARM_OBJECT_ID;=0D =0D @@ -719,25 +718,6 @@ typedef struct CmArmCacheInfo { UINT32 CacheId;=0D } CM_ARM_CACHE_INFO;=0D =0D -/** A structure that describes the PCI Device Handle (Type 1) in the=0D - Generic Initiator Affinity structure in SRAT=0D -=0D - ID: EArmObjDeviceHandlePci=0D -*/=0D -typedef struct CmArmDeviceHandlePci {=0D - /// PCI Segment Number=0D - UINT16 SegmentNumber;=0D -=0D - /// PCI Bus Number - Max 256 busses (Bits 15:8 of BDF)=0D - UINT8 BusNumber;=0D -=0D - /// PCI Device Number - Max 32 devices (Bits 7:3 of BDF)=0D - UINT8 DeviceNumber;=0D -=0D - /// PCI Function Number - Max 8 functions (Bits 2:0 of BDF)=0D - UINT8 FunctionNumber;=0D -} CM_ARM_DEVICE_HANDLE_PCI;=0D -=0D /** A structure that describes the Generic Initiator Affinity structure in= SRAT=0D =0D ID: EArmObjGenericInitiatorAffinityInfo=0D diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator= .c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator.c index c65a28cd142a..66fefc80f5f6 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSratLibArm/SratGenerator.c @@ -35,7 +35,7 @@ - EArchCommonObjMemoryAffinityInfo (OPTIONAL)=0D - EArmObjGenericInitiatorAffinityInfo (OPTIONAL)=0D - EArchCommonObjDeviceHandleAcpi (OPTIONAL)=0D - - EArmObjDeviceHandlePci (OPTIONAL)=0D + - EArchCommonObjDeviceHandlePci (OPTIONAL)=0D */=0D =0D /** This macro expands to a function that retrieves the GIC=0D @@ -92,9 +92,9 @@ GET_OBJECT_LIST ( information from the Configuration Manager.=0D */=0D GET_OBJECT_LIST (=0D - EObjNameSpaceArm,=0D - EArmObjDeviceHandlePci,=0D - CM_ARM_DEVICE_HANDLE_PCI=0D + EObjNameSpaceArchCommon,=0D + EArchCommonObjDeviceHandlePci,=0D + CM_ARCH_COMMON_DEVICE_HANDLE_PCI=0D );=0D =0D /** Return the PCI Device information in BDF format=0D @@ -110,7 +110,7 @@ GET_OBJECT_LIST ( STATIC=0D UINT16=0D GetBdf (=0D - IN CONST CM_ARM_DEVICE_HANDLE_PCI *DeviceHandlePci=0D + IN CONST CM_ARCH_COMMON_DEVICE_HANDLE_PCI *DeviceHandlePci=0D )=0D {=0D UINT16 Bdf;=0D @@ -302,7 +302,7 @@ AddGenericInitiatorAffinity ( EFI_STATUS Status;=0D EFI_ACPI_6_3_GENERIC_INITIATOR_AFFINITY_STRUCTURE *GenInitAff;=0D CM_ARCH_COMMON_DEVICE_HANDLE_ACPI *DeviceHandleAcpi;=0D - CM_ARM_DEVICE_HANDLE_PCI *DeviceHandlePci;=0D + CM_ARCH_COMMON_DEVICE_HANDLE_PCI *DeviceHandlePci;=0D UINT32 DeviceHandleCount;=0D =0D ASSERT (Srat !=3D NULL);=0D @@ -362,7 +362,7 @@ AddGenericInitiatorAffinity ( } else if (GenInitAffInfo->DeviceHandleType =3D=3D=0D EFI_ACPI_6_3_PCI_DEVICE_HANDLE)=0D {=0D - Status =3D GetEArmObjDeviceHandlePci (=0D + Status =3D GetEArchCommonObjDeviceHandlePci (=0D CfgMgrProtocol,=0D GenInitAffInfo->DeviceHandleToken,=0D &DeviceHandlePci,=0D diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTok= enFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectToke= nFixer.c index 43aae423814f..d5ee9317e693 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c @@ -165,21 +165,20 @@ CM_OBJECT_TOKEN_FIXER TokenFixer[EArmObjMax] =3D { NULL, ///< 19 - SMMU Interrupt Array=0D TokenFixerNotImplemented, ///< 20 - Processor Hierarchy Info=0D TokenFixerNotImplemented, ///< 21 - Cache Info=0D - NULL, ///< 22 - Device Handle Pci=0D - NULL, ///< 23 - Generic Initiator Affinity=0D - NULL, ///< 24 - CMN-600 Info=0D - NULL, ///< 25 - Lpi Info=0D - NULL, ///< 26 - Reserved Memory Range Node=0D - NULL, ///< 27 - Memory Range Descriptor=0D - NULL, ///< 28 - Continuous Performance Contr= ol Info=0D - NULL, ///< 29 - Pcc Subspace Type 0 Info=0D + NULL, ///< 22 - Generic Initiator Affinity=0D + NULL, ///< 23 - CMN-600 Info=0D + NULL, ///< 24 - Lpi Info=0D + NULL, ///< 25 - Reserved Memory Range Node=0D + NULL, ///< 26 - Memory Range Descriptor=0D + NULL, ///< 27 - Continuous Performance Contr= ol Info=0D + NULL, ///< 28 - Pcc Subspace Type 0 Info=0D + NULL, ///< 29 - Pcc Subspace Type 2 Info=0D NULL, ///< 30 - Pcc Subspace Type 2 Info=0D - NULL, ///< 31 - Pcc Subspace Type 2 Info=0D - NULL, ///< 32 - Pcc Subspace Type 3 Info=0D - NULL, ///< 33 - Pcc Subspace Type 4 Info=0D - NULL, ///< 34 - Pcc Subspace Type 5 Info=0D - NULL, ///< 35 - Embedded Trace Extension/Mod= ule Info=0D - NULL ///< 36 - P-State Dependency (PSD) Inf= o=0D + NULL, ///< 31 - Pcc Subspace Type 3 Info=0D + NULL, ///< 32 - Pcc Subspace Type 4 Info=0D + NULL, ///< 33 - Pcc Subspace Type 5 Info=0D + NULL, ///< 34 - Embedded Trace Extension/Mod= ule Info=0D + NULL ///< 35 - P-State Dependency (PSD) Inf= o=0D };=0D =0D /** CmObj token fixer.=0D diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationMa= nagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/Config= urationManagerObjectParser.c index 9326ea639351..4b4965dfb00f 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c @@ -372,9 +372,9 @@ STATIC CONST CM_OBJ_PARSER CmArchCommonDeviceHandleAcp= iParser[] =3D { { "Uid", 4, "0x%x", NULL }=0D };=0D =0D -/** A parser for EArmObjDeviceHandlePci.=0D +/** A parser for EArchCommonObjDeviceHandlePci.=0D */=0D -STATIC CONST CM_OBJ_PARSER CmArmDeviceHandlePciParser[] =3D {=0D +STATIC CONST CM_OBJ_PARSER CmArchCommonDeviceHandlePciParser[] =3D {=0D { "SegmentNumber", 2, "0x%x", NULL },=0D { "BusNumber", 1, "0x%x", NULL },=0D { "DeviceNumber", 1, "0x%x", NULL },=0D @@ -683,6 +683,7 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceOb= jectParser[] =3D { CM_PARSER_ADD_OBJECT (EArchCommonObjPciInterruptMapInfo, CmArchCom= monPciInterruptMapInfoParser),=0D CM_PARSER_ADD_OBJECT (EArchCommonObjMemoryAffinityInfo, CmArchCom= monMemoryAffinityInfoParser),=0D CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandleAcpi, CmArchCom= monDeviceHandleAcpiParser),=0D + CM_PARSER_ADD_OBJECT (EArchCommonObjDeviceHandlePci, CmArchCom= monDeviceHandlePciParser),=0D CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax)=0D };=0D =0D @@ -711,7 +712,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectPar= ser[] =3D { CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray, CmArchCommonGe= nericInterruptParser),=0D CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo, CmArmProcHiera= rchyInfoParser),=0D CM_PARSER_ADD_OBJECT (EArmObjCacheInfo, CmArmCacheInfo= Parser),=0D - CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci, CmArmDeviceHan= dlePciParser),=0D CM_PARSER_ADD_OBJECT (EArmObjGenericInitiatorAffinityInfo,CmArmGenericIn= itiatorAffinityInfoParser),=0D CM_PARSER_ADD_OBJECT (EArmObjCmn600Info, CmArmCmn600Inf= oParser),=0D CM_PARSER_ADD_OBJECT (EArmObjLpiInfo, CmArmLpiInfoPa= rser),=0D diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md index f82c37f4afeb..9c7738983df5 100644 --- a/DynamicTablesPkg/Readme.md +++ b/DynamicTablesPkg/Readme.md @@ -462,21 +462,20 @@ The CM_OBJECT_ID type is used to identify the Configu= ration Manager | 19 | SMMU Interrupt Array | |=0D | 20 | Processor Hierarchy Info | Move to Arch Common = NS |=0D | 21 | Cache Info | Move to Arch Common = NS |=0D -| 22 | Device Handle PCI | Move to Arch Common = NS |=0D -| 23 | Generic Initiator Affinity Info | Move to Arch Common = NS |=0D -| 24 | CMN 600 Info | |=0D -| 25 | Low Power Idle State Info | Move to Arch Common = NS |=0D -| 26 | Reserved Memory Range Node | |=0D -| 27 | Memory Range Descriptor | |=0D -| 28 | Continuous Performance Control Info | Move to Arch Common = NS |=0D -| 29 | Pcc Subspace Type 0 Info | Move to Arch Common = NS |=0D -| 30 | Pcc Subspace Type 1 Info | Move to Arch Common = NS |=0D -| 31 | Pcc Subspace Type 2 Info | Move to Arch Common = NS |=0D -| 32 | Pcc Subspace Type 3 Info | Move to Arch Common = NS |=0D -| 33 | Pcc Subspace Type 4 Info | Move to Arch Common = NS |=0D -| 34 | Pcc Subspace Type 5 Info | Move to Arch Common = NS |=0D -| 35 | Embedded Trace Extension/Module Info | |=0D -| 36 | P-State Dependency (PSD) Info | Move to Arch Common = NS |=0D +| 22 | Generic Initiator Affinity Info | Move to Arch Common = NS |=0D +| 23 | CMN 600 Info | |=0D +| 24 | Low Power Idle State Info | Move to Arch Common = NS |=0D +| 25 | Reserved Memory Range Node | |=0D +| 26 | Memory Range Descriptor | |=0D +| 27 | Continuous Performance Control Info | Move to Arch Common = NS |=0D +| 28 | Pcc Subspace Type 0 Info | Move to Arch Common = NS |=0D +| 29 | Pcc Subspace Type 1 Info | Move to Arch Common = NS |=0D +| 30 | Pcc Subspace Type 2 Info | Move to Arch Common = NS |=0D +| 31 | Pcc Subspace Type 3 Info | Move to Arch Common = NS |=0D +| 32 | Pcc Subspace Type 4 Info | Move to Arch Common = NS |=0D +| 33 | Pcc Subspace Type 5 Info | Move to Arch Common = NS |=0D +| 34 | Embedded Trace Extension/Module Info | |=0D +| 35 | P-State Dependency (PSD) Info | Move to Arch Common = NS |=0D | `*` | All other values are reserved. | |=0D =0D #### Object ID's in the Arch Common Namespace:=0D @@ -496,4 +495,5 @@ The CM_OBJECT_ID type is used to identify the Configura= tion Manager | 10 | PCI Interrupt Map Info | |=0D | 11 | Memory Affinity Info | |=0D | 12 | Device Handle Acpi | |=0D +| 13 | Device Handle PCI | |=0D | `*` | All other values are reserved. | |=0D --=20 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116984): https://edk2.groups.io/g/devel/message/116984 Mute This Topic: https://groups.io/mt/105068154/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-