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 A001C941BD3 for ; Tue, 31 Oct 2023 17:57:00 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=6TcF1Q05+HSOCko7ArZWCrBcb+xxLwkaQ6A2CHu0K1Y=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1698775019; v=1; b=cqF65eJT6ie56Zw30gvVLyPifDPWezJ/jgc7gyKqyNOQd2Z8QvXx+IaB5cQx3HLT9S7F7wKi lVqvnRIqYX1uQHq86TqY7DstIOmeKSu0d+t59fKrBNubbKrrchBezOKKHq+BK5SRNpRiXrbA7P3 fg3n55R6cjAP1DrAagUcZC8I= X-Received: by 127.0.0.2 with SMTP id zLHUYY7687511xQGmaKLAplW; Tue, 31 Oct 2023 10:56:59 -0700 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.63]) by mx.groups.io with SMTP id smtpd.web10.2517.1698775017874937301 for ; Tue, 31 Oct 2023 10:56:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AvWBMHWdtNslC0qx5n8hDYdElfYH/uGq2miTJGBjPBqACsyQE2L9RdnpcEaskpY9qML9ENGOu6zG3mf4sulowopsj1St8UWVmDMFPQ5oxKEAQ8i8lrmQlFlrnUQyxN6q5gQcsikGdaPpKedeR04CYfWcOFEfjgf5niZMup8LfXNurYnFjk+xotNErBO3+AqN+k4PEhYlmEk6+XnNn3emDA9KI6IA7gsdpOBr63Rx7P05I6K+FZWC4dK5Q+UcCA/LXVPsDjZngYxktfpiOJto6rmwfnbIciygV+8uMmieiC0SuatGUhdw4NjShSqAt4wHIVKAq67xfaIR1T0ukmmngg== 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=zhw5S9MwJAuvFxGPUwmkVe2Pxmp3jvXT+PRsuat0j+U=; b=UWG5DNs/vNbx7jPpypuS6P02UWeKK2TPWnTJzNqJKEuzNBHAdpeQT6Zs+jpkRhlU++u3/wBXRZ3y2N8lIV0nLh3DEcLTuqPPBuKrr5zXNlpvcF6c8iMS86D350KTaShv2FV/KGz1tCTQfppZqyPqT0WbX+kU53tH+TQCUOYf/hWNcUKx+5LguR0bhrcFI+RPW/2dRLSAM1qcEdrqxLrU3EazcA57EkCGf34YJ25vA9mHlRovqG863CeJaGJHXrmC/qOf0p4cwPFAeJzPTZXwJsz1UDnu0aDMCyyr0jcyStBdlqtPpim0HlTmXzZg5opHjGnfpXzJciC5OunWUnFsew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ami.com; dmarc=pass action=none header.from=ami.com; dkim=pass header.d=ami.com; arc=none X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com (2603:10b6:208:328::16) by CO1PR10MB4769.namprd10.prod.outlook.com (2603:10b6:303:98::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Tue, 31 Oct 2023 17:56:53 +0000 X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::dc81:5921:24a3:52e9]) by BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::dc81:5921:24a3:52e9%4]) with mapi id 15.20.6933.029; Tue, 31 Oct 2023 17:56:53 +0000 From: "Igor Kulchytskyy via groups.io" To: "devel@edk2.groups.io" CC: Abner Chang , Nickle Wang Subject: [edk2-devel] [PATCH] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx Thread-Topic: [PATCH] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx Thread-Index: AQHaDCOh6zqG9jdmCEaWf+ayv/I8Rw== Date: Tue, 31 Oct 2023 17:56:53 +0000 Message-ID: <1698774975-14480-1-git-send-email-igork@ami.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR10MB5185:EE_|CO1PR10MB4769:EE_ x-ms-office365-filtering-correlation-id: ea60ab5e-5ac2-47e7-8e1f-08dbda3ac423 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: lbK3VgCUGVp36VqNulqqNajXZiLg3tp61fJ8fDXGqMYi3UbYXW3gYaQxLuBMjDw94DGOIKfVHXkQseAUkfBoDztQrWpf1zEQP+QyQJE2rkXm/UOEw8pQe0Ho7Kq3FEYa9st+B2hWRVKfUY3gGtIr6aIvbWtU2+Mugjdp5667ZXUhbxKrQS9RQqIF3wRv4vRw7YFf965se612rAnO2Nqn+h32VLI0DyJ4SMHkQBV9jllorXkdQyJEJqGLdjVHDMRztH/WNUejv4BizDPJ9+PHyJNMriLA/dbWGPWZd4SJmW5ZoPwnoCskrb8iOkKGbG27EmOCxhom/asDOS6vzXMAoCgE2ih4n6VAo+RBx1g1+4MlEPHvazPHcv/5XKbaIP9qIzG+tc7ntiN9X0IxgAhyVN2WGqMa2J1p5iDoI3tXXQD3/1h6P1Y3wtztIJHf0qGp0qNjVQwxdS6mlx11UtigWMIeimEnlZy2dw8qPrq2HNO2LodDIvuOp5JCtgzbMI98e2hhimPKxPGc25OZW1csUawNb7UvdNWbOsIY0X6dAl10Z6c3Zv/mmwr8A1LNz1okd9PTIcQhd1P9WAn0rQbJhwG39Ia5qSR4gTvSlqoyWTLSq7WN+3vgBpianeff/5Rf x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Jhier1k7LZtIdDLUAsLQIkCBOJCTS+9TawmG+CPONJVJInnFuRfQdWTdq3?= =?iso-8859-1?Q?vKNguVgTbf5CD3+6iXJKUQHWECbz97PEYAN8/PIYZkJZGZvMuNoekuszBe?= =?iso-8859-1?Q?kVQKokB0GCPFx8IoAlda5/exur08fCZOCMA/8YKoIko5pwFS9vn80tmnPi?= =?iso-8859-1?Q?0tmN+UjAU880ui2RWjpnKaonoEuOJ/TyLkPoO7jo+TEAAPax08Hgbkvwyy?= =?iso-8859-1?Q?7zFoBY4Dx6MIwWy5ZhYZ4YWKVbs5IqmT09bfuQk9Lkupc2VWd/v5n8uXV6?= =?iso-8859-1?Q?lk26nBXwU61vEMN7Doypy63/J3RHlpgZz2kPpp1UDJif4EZBzvJcNqqhs9?= =?iso-8859-1?Q?z+CevWEIZu9Rx5XosTRKB8I2ua1UCUvr450gom2GJFYMMPTdLzaOinVP0l?= =?iso-8859-1?Q?kyYH2NUGkuVoBFPiZmX1YUEkcv96R/Drsy6I3yEnZbMWOpBCLCl7a58qRC?= =?iso-8859-1?Q?rpSZPwcuuupAY7cq+w91sXRN1B95gQ2x4ehQ0b2Ox6XugYkr3fWzjI6cwL?= =?iso-8859-1?Q?1zOP5XlC35VaCLzRaYfGYyev4aICpHko8CYDUnKBSf55ZsiacOWSKorf80?= =?iso-8859-1?Q?h/m0WfeFjG4YfZuoTiatxJzUiK7xcweb/9GjMULolz89yzpR/UU0Lvoij8?= =?iso-8859-1?Q?BzoTCZtsIUGL5LV1NMYjKujp4YDLOgQPIY7D2Z/VY0iC60s71DUvQxpFAV?= =?iso-8859-1?Q?z6q8XnOZKwoCvQKXpaguRS0dpeXPCgf/fw6FapO8WbITgL0x5HrlVfhFF7?= =?iso-8859-1?Q?AiClVn84R+cBTsv2HAjUdPatPTlNKJGKF2owun0RkqrxGgOkJ7zvS9K8TN?= =?iso-8859-1?Q?UeJ0m1zqmGNiqfnfrLXFe6IRwOSDNZ5BSColHyjXBlxIDRc/0TPMfT3klr?= =?iso-8859-1?Q?/UC3ZLqCUJagpIfRrdPtAfHgvxWocx5QEdvC2m9w8xGDMoTLcafEFCavJp?= =?iso-8859-1?Q?0VYcxpKz6yhKolUxSyVWFNDEGua9LDTIgmNHXUnygKAnOEfZfI6fR0tuCT?= =?iso-8859-1?Q?63suY5rN1a7Ci5htQa40S9COsWDfugLEl2ijt0ca5lv+VlYyguM0VHs6WM?= =?iso-8859-1?Q?9oXhwdem8PPwXQCcQ1GMpUf9G4k04QkQ1GvMBhTg11QBCUnJ/QbQ+yxg/w?= =?iso-8859-1?Q?4/mEYJ2hiKCaC+NiaDWiyg6tqpUq1rVXW+ZrQP+b1jEfEWe6DoVwGQqRQu?= =?iso-8859-1?Q?KfW+eN4BP56eF8DZP+hHC+9SYUoWhSbXXjvIQwsz4rd12UnSQ83JyTu+Cc?= =?iso-8859-1?Q?TgYq/ttwUr9BwAOgS3sKoRA5PzeFrP5BCsBOeRxEFMOy25s0EMccHHf0eT?= =?iso-8859-1?Q?DNR8UTkpVFDSFxt7pjVB5uBS5uvSpT3FK/hICoMk/BwND0bmAasttvDJwx?= =?iso-8859-1?Q?OQbcWuJFGhVsoN/4JkRR76v+WNT44X027ou6fb6h5Ytr1yVk0MoS23pLR2?= =?iso-8859-1?Q?kOmVNQ7ucXj8BEV/T6MjJxW9VLbBiPGyY+3faw6uUreovcGUQDVTkQMNJ2?= =?iso-8859-1?Q?ltybGgFzXeN2ql68o5Myutm69q+mOK0bKW1HUbD48ZAkA85dX+M19VJOtD?= =?iso-8859-1?Q?nEfozej/6VdYAeXsPBaMK8TU7tSYmjj6pdjKIqdjisDqPmWoriLQIwlV4Q?= =?iso-8859-1?Q?s7bNSoUAGETKM=3D?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5185.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea60ab5e-5ac2-47e7-8e1f-08dbda3ac423 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Oct 2023 17:56:53.6350 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IoxRqTq9k4sykyLLIljhb/fJiOYF1h58ag9TxjVT2YVSZNCV+0HaOfyaFiS5Rizj X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4769 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,igork@ami.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 7jaV3G56nLUHFV5IF26qgt9px7686176AA= Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=cqF65eJT; dmarc=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 Supported function of the driver changed to wait for all newtwork interface to be installed. Filer out the network interfaces which are not supported by Redfish Host Interface. Cc: Abner Chang Cc: Nickle Wang Cc: Igor Kulchytskyy Signed-off-by: Igor Kulchytskyy --- RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c | 96 ++++++++++++++++++= -- 1 file changed, 89 insertions(+), 7 deletions(-) diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c b/RedfishPk= g/RedfishDiscoverDxe/RedfishDiscoverDxe.c index 23da3b968f..a88ad55938 100644 --- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c +++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c @@ -322,9 +322,15 @@ GetTargetNetworkInterfaceInternal ( { EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *ThisNetworkInterface; + if (IsListEmpty(&mEfiRedfishDiscoverNetworkInterface)) { + return NULL; + } + ThisNetworkInterface =3D (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNA= L *)GetFirstNode (&mEfiRedfishDiscoverNetworkInterface); while (TRUE) { - if (CompareMem ((VOID *)&ThisNetworkInterface->MacAddress, &TargetNetw= orkInterface->MacAddress, ThisNetworkInterface->HwAddressSize) =3D=3D 0) { + if (CompareMem ((VOID *)&ThisNetworkInterface->MacAddress, &TargetNetw= orkInterface->MacAddress, ThisNetworkInterface->HwAddressSize) =3D=3D 0 && + ((TargetNetworkInterface->IsIpv6 && ThisNetworkInterface->NetworkP= rotocolType =3D=3D ProtocolTypeTcp6) || + (!TargetNetworkInterface->IsIpv6 && ThisNetworkInterface->Netw= orkProtocolType =3D=3D ProtocolTypeTcp4))) { return ThisNetworkInterface; } @@ -354,6 +360,10 @@ GetTargetNetworkInterfaceInternalByController ( { EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *ThisNetworkInterface; + if (IsListEmpty(&mEfiRedfishDiscoverNetworkInterface)) { + return NULL; + } + ThisNetworkInterface =3D (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNA= L *)GetFirstNode (&mEfiRedfishDiscoverNetworkInterface); while (TRUE) { if (ThisNetworkInterface->OpenDriverControllerHandle =3D=3D Controller= Handle) { @@ -476,6 +486,38 @@ CheckIsIpVersion6 ( return FALSE; } +/** + This function returns the IP type supported by the Host Interface + + @retval IP Type + // Unknown=3D00h, + // Ipv4=3D01h, + // Ipv6=3D02h, + +**/ +UINT8 +GetHiIpProtocolType() +{ + EFI_STATUS Status; + REDFISH_OVER_IP_PROTOCOL_DATA *Data; + REDFISH_INTERFACE_DATA *DeviceDescriptor; + + Data =3D NULL; + DeviceDescriptor =3D NULL; + if (mSmbios =3D=3D NULL) { + Status =3D gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL, (VOID *= *)&mSmbios); + if (EFI_ERROR (Status)) { + return 0; + } + } + Status =3D RedfishGetHostInterfaceProtocolData (mSmbios, &DeviceDescript= or, &Data); // Search for SMBIOS type 42h + if (!EFI_ERROR (Status) && (Data !=3D NULL) && + (Data->HostIpAssignmentType =3D=3D RedfishHostIpAssignmentStatic)) { + return Data->HostIpAddressFormat; + } + return 0; +} + /** This function discover Redfish service through SMBIOS host interface. @@ -512,6 +554,15 @@ DiscoverRedfishHostInterface ( Status =3D RedfishGetHostInterfaceProtocolData (mSmbios, &DeviceDescript= or, &Data); // Search for SMBIOS type 42h if (!EFI_ERROR (Status) && (Data !=3D NULL) && (DeviceDescriptor !=3D NU= LL)) { + + if (Instance->NetworkInterface->NetworkProtocolType =3D=3D ProtocolTyp= eTcp4 && Data->HostIpAddressFormat !=3D REDFISH_HOST_INTERFACE_HOST_IP_ADDR= ESS_FORMAT_IP4) { // IPv4 case + DEBUG((DEBUG_ERROR, "%a: Network Interface is IPv4, but Host Interfa= ce requires Ipv6\n")); + return EFI_UNSUPPORTED; + } + else if (Instance->NetworkInterface->NetworkProtocolType =3D=3D Protoc= olTypeTcp6 && Data->HostIpAddressFormat !=3D REDFISH_HOST_INTERFACE_HOST_IP= _ADDRESS_FORMAT_IP6) { // IPv6 case + DEBUG((DEBUG_ERROR, "%a: Network Interface is IPv6, but Host Interfa= ce requires IPv4\n")); + return EFI_UNSUPPORTED; + } // // Check if we can reach out Redfish service using this network interf= ace. // Check with MAC address using Device Descriptor Data Device Type 04 = and Type 05. @@ -1102,6 +1153,7 @@ RedfishServiceGetNetworkInterface ( OUT EFI_REDFISH_DISCOVER_NETWORK_INTERFACE **NetworkIntfInstances ) { + EFI_STATUS Status; EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *ThisNetworkInterfaceIn= tn; EFI_REDFISH_DISCOVER_NETWORK_INTERFACE *ThisNetworkInterface; EFI_REDFISH_DISCOVER_REST_EX_INSTANCE_INTERNAL *RestExInstance; @@ -1141,6 +1193,16 @@ RedfishServiceGetNetworkInterface ( ThisNetworkInterfaceIntn =3D (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INT= ERNAL *)GetFirstNode (&mEfiRedfishDiscoverNetworkInterface); while (TRUE) { + // If Get Subnet Info skip this interface + Status =3D NetworkInterfaceGetSubnetInfo (ThisNetworkInterfaceIntn, Im= ageHandle); // Get subnet info + if (EFI_ERROR(Status)) { + if (IsNodeAtEnd (&mEfiRedfishDiscoverNetworkInterface, &ThisNetworkI= nterfaceIntn->Entry)) { + break; + } + ThisNetworkInterfaceIntn =3D (EFI_REDFISH_DISCOVER_NETWORK_INTERFACE= _INTERNAL *)GetNextNode (&mEfiRedfishDiscoverNetworkInterface, &ThisNetwork= InterfaceIntn->Entry); + continue; + } + ThisNetworkInterface->IsIpv6 =3D FALSE; if (CheckIsIpVersion6 (ThisNetworkInterfaceIntn)) { ThisNetworkInterface->IsIpv6 =3D TRUE; @@ -1260,7 +1322,12 @@ RedfishServiceAcquireService ( // Get subnet information in case subnet information is not set beca= use // RedfishServiceGetNetworkInterfaces hasn't been called yet. // - NetworkInterfaceGetSubnetInfo (TargetNetworkInterfaceInternal, Image= Handle); + Status1 =3D NetworkInterfaceGetSubnetInfo (TargetNetworkInterfaceInt= ernal, ImageHandle); + if (EFI_ERROR(Status1)) { + DEBUG ((DEBUG_ERROR, "%a: Get subnet information fail.\n", __func_= _)); + FreePool(Instance); + continue; + } NewInstance =3D TRUE; } @@ -1535,7 +1602,7 @@ TestForRequiredProtocols ( UINT32 *Id; UINTN Index; EFI_STATUS Status; - UINTN ListCount; + UINTN ListCount, SuccessfulCount =3D 0; ListCount =3D (sizeof (gRequiredProtocol) / sizeof (REDFISH_DISCOVER_REQ= UIRED_PROTOCOL)); for (Index =3D 0; Index < ListCount; Index++) { @@ -1557,13 +1624,14 @@ TestForRequiredProtocols ( EFI_OPEN_PROTOCOL_GET_PROTOCOL ); if (EFI_ERROR (Status)) { - if (Index =3D=3D ListCount - 1) { - DEBUG ((DEBUG_INFO, "%a: all required protocols are found on thi= s controller handle: %p.\n", __func__, ControllerHandle)); - return EFI_SUCCESS; - } + SuccessfulCount++; } } } + if (ListCount =3D=3D SuccessfulCount) { + DEBUG ((DEBUG_INFO, "%a: all required protocols are found on this cont= roller handle: %p.\n", __func__, ControllerHandle)); + return EFI_SUCCESS; + } return EFI_UNSUPPORTED; } @@ -1600,10 +1668,24 @@ BuildupNetworkInterface ( EFI_REDFISH_DISCOVER_REST_EX_INSTANCE_INTERNAL *RestExInstance; EFI_TPL OldTpl; BOOLEAN NewNetworkInterfaceInst= alled; + UINT8 IpType; NewNetworkInterfaceInstalled =3D FALSE; Index =3D 0; + + + // Get IP Type to filter out unnecessary network protocol if possible + IpType =3D GetHiIpProtocolType(); + do { + // Check IP Type and skip an unnecessary network protocol if does not = match + if (IpType !=3D 0) { + if ((gRequiredProtocol[Index].ProtocolType =3D=3D ProtocolTypeTcp4 &= & IpType =3D=3D REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP6) || + (gRequiredProtocol[Index].ProtocolType =3D=3D ProtocolTypeTcp6 &= & IpType =3D=3D REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4)) { + Index++; + continue; + } + } Status =3D gBS->OpenProtocol ( // Already in list? ControllerHandle, -- 2.37.1.windows.1 -The information contained in this message may be confidential and propriet= ary to American Megatrends (AMI). This communication is intended to be read= only by the individual or entity to whom it is addressed or by their desig= nee. If the reader of this message is not the intended recipient, you are o= n notice that any distribution of this message, in any form, is strictly pr= ohibited. Please promptly notify the sender by reply e-mail or by telephone= at 770-246-8600, and then delete or destroy all copies of the transmission= . -=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 (#110440): https://edk2.groups.io/g/devel/message/110440 Mute This Topic: https://groups.io/mt/102303105/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-