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 260F7740032 for ; Thu, 28 Mar 2024 06:54:16 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=nC75rgtj0qGw2JAEKRkU+XlDPhWvtVGZ5EgWE2eEaTc=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20240206; t=1711608855; v=1; b=r/P79AROKyvkE2R86Z4KJaPaELOXjcSlBvI0mYDu8Ec4ibuUP2c2q1cVLdxCg1WaI31KIOZV 7r9bCcQYTEU4Ft5Kr8f34zTRrgxyGUKsGzxRao5WqrlcVdlQ/wh3hZFajjJnerKC4jyDjc3IyWQ HdO/sLDvO5bxiODfh/sV1TPFrTgHOUeN9jeQOXNGdJib/98jSqFTD+04LISpIJgFGenuhcOceDF T/TmBfCBR2sE9yN73qoPLPpJ9QTKY0A5AcCkAygEh+oCzIeEUBTscc/9O87tSLvt7I8w+95SBG2 omZkUPy3tlTlU2Lh+EdyHZYlbjVsPgBJcZaCaYbvHFYGw== X-Received: by 127.0.0.2 with SMTP id PnnkYY7687511xTbKbtDKOwI; Wed, 27 Mar 2024 23:54:15 -0700 X-Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.70]) by mx.groups.io with SMTP id smtpd.web11.9714.1711608854473783464 for ; Wed, 27 Mar 2024 23:54:14 -0700 X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com (2603:10b6:408:200::8) by MW4PR12MB7288.namprd12.prod.outlook.com (2603:10b6:303:223::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33; Thu, 28 Mar 2024 06:54:10 +0000 X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::e006:4173:de2c:aca0]) by LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::e006:4173:de2c:aca0%5]) with mapi id 15.20.7409.031; Thu, 28 Mar 2024 06:54:10 +0000 From: "Chang, Abner via groups.io" To: Nickle Wang , "devel@edk2.groups.io" , Mike Maslenkin CC: Igor Kulchytskyy Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH V5 1/2] RedfishClientPkg: Set SettingsObject URI as the config language Thread-Topic: [edk2-redfish-client][PATCH V5 1/2] RedfishClientPkg: Set SettingsObject URI as the config language Thread-Index: AQHafGcZhkEZ/Uk3jkGOazQqRXC/lbFJ9SlAgALLTTA= Date: Thu, 28 Mar 2024 06:54:10 +0000 Message-ID: References: <20240322144124.1671-1-abner.chang@amd.com> In-Reply-To: Accept-Language: en-US, zh-CN X-Mentions: mike.maslenkin@gmail.com X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=b4fbe4ac-c4b1-433a-849e-38cbebf02cae;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2024-03-28T06:53:26Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV8PR12MB9452:EE_|MW4PR12MB7288:EE_ x-ms-office365-filtering-correlation-id: d7b41765-bb05-4693-9ac4-08dc4ef3def0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: e2ZyKatcYlm01tUhZIBetVldriW0C/nzkb7LFR9DMX9bPxMwD9B/8czki+5rxaWWmgCWguVBoPSODYd0zsTzlTJ5ReLZH/tZTob6k/haU7IFUGvscxbGMdhrk7NahD6DxY91MtWQVS1niH7sewjOHZaQj211BrkYYVuWPOkLhhwF6aVPtm5w4b4hwyNVrbsvxjNnO7w8AOBIMekGvemmLkTi3o60k1HY1TxQNhHF9eTvSKflGtXIVlL6Rs9e0cPubD7hwo7PJ1UVA+Dfo/dUOeF2naSnJyxudnb7I9ryB4pMvGmgYbNvPpUbw8lv11BheO4DUdusiNlkNFz3hCpguCyUmQN/BIkAsBPC1SE/R8ciQbjS1BhwaiHk4cTkV63Yj0aMDJ139FsnxGvIsrgnyoVd7DcGKMBd/GxZLgMlJe1sAPBNa4uLWGtFPnNFypiRnVr1ROZp58cRGqFU6Hb3sS2FJndWR99STs26hC+W+qK7CQjKz6MnAYL/vWOSKNKY7lzpFwAV1zDCvJGF51luku5fRoJ0+Ov3TWQYzNb3L3BKKbBLmikKS3IW+kWLRwYySH+JOQ+E1C6eymzDu/yKBKdVTPiqLBex4o7NAYbUEA9KNNTpAUraKtXMPz6UtF+7GPhfH9saLJo1CKIe7WRW1w1SfEOMKRoYPkb3xUDOPP/cnysSJWZYvYAXKtFIVfsMj0EhQ7BS+fvL8Lcw/1U5RQ== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?4RtnPPmgmTq8MDfnsVIYre8Sj1i855aaXqiSawO5nVvmxUpzM6TGozSnMa3r?= =?us-ascii?Q?SZz0coaZfi5aGAdK46EC6s//iSLGT6Nh+kWvvvZ4QfA49E+iRu3kMRhTs8t5?= =?us-ascii?Q?k0cWNkIUcXSCwQuMTciXAPeU3DK5xM/HJjdjgDkb3IycODp0AdK3j+eddNd8?= =?us-ascii?Q?fEl+ulkjpGCkg4UXyq8BYWAC28IeeMbE1Sfzdyub6EPne1DnXaOpEiBFssA+?= =?us-ascii?Q?91zelkzT9Exv8zefZYdcZaUE+sJfBxDLdLGoSUqel8m2Rk5PUJzEV0RCfCkY?= =?us-ascii?Q?c4uJRmI69xxKGuzHmBVF2U7Jeg8oCRWSCLy8XAxy+3zhjSUoJHGFCvIEhs7L?= =?us-ascii?Q?sK0iz+gN9yRacA5zQKTRIQt57XHEVqefdxt+zTIf+rczghttd9fcZ2+cCG03?= =?us-ascii?Q?TyAjW45Q/Yn0wmRBtQT/2wpTRBJuXHvGl1nYFtDLUuePcQ0ZKCfAFi6fslDU?= =?us-ascii?Q?sRLUprjD8fIn5Freo3dqhsJHxctR3WAi0cjtJkLZifnsMlkkviELjYsI1at2?= =?us-ascii?Q?Pu3wX9yThXjfRo4FLkcWP1++Xtn6V7wmqsmWbrF9NYpy8Kq0scZJeYt/9Swk?= =?us-ascii?Q?j3JxaE8SJsm8/W2wffUPX4Y6qq9g4qDL+8aVXR2FB0RAOgzwKn7qUdNgXN51?= =?us-ascii?Q?zpthXwPjgKPmsEUwtIoKd3yyNMdeZKwma8wfUomXAXlZx0PriVVEWHxlhJHr?= =?us-ascii?Q?G1gkSdSsc1Iu12ZyPlR9WzU4WJpw/TFEVtTe/gcJfca3+8vCXGD2C7ByBEHt?= =?us-ascii?Q?dT4AIAjdPPGAzxAvylFZxav3sVAocRYwv3/lrD1QfptzeqJx16A4N/MwSdde?= =?us-ascii?Q?ZsKyalWjLXS3YsIaep5yixjD+KME28JnvY1DPUSR2PwMqUuR+QjpdI2MCZbf?= =?us-ascii?Q?9lybts8s6riBMUwgRbNzMjrO9zRfQPtzvIt9zZFdGKHSn9PxYjY2qb8C6X69?= =?us-ascii?Q?yMSdJarV7v0MUpsjpTStmP1Ra6MUK4Lry4Ln1txftCX6d6dJO5d03GUh3Bh8?= =?us-ascii?Q?XA4eyiltJe7uWtcAx2VSlBnryH6+jZTQ7TCdr71r7bDPBahmB4oqI8/Bj4HA?= =?us-ascii?Q?bsTJDdR8pTdcHCFkh+/8uqOWVLt3/748PsnaV7EM5RARpdRbEPgNC6M0r6HB?= =?us-ascii?Q?2hAfUdBUXp6mRmXd3Vn1RALnS5J+9Yklv3cZomrJkga5R4o0vU7NPcAA5nLK?= =?us-ascii?Q?5nBk/R/vADd8vT3FteTxhD+pNcb6NReGvdzhnh7aSWNMuGLryWIngbca+EOc?= =?us-ascii?Q?f136ICziXMn02HkBOten7Yh75kzYASchkqxyAzXnKmJHmL8SwQvIM/8/av7D?= =?us-ascii?Q?OtVo/1V2902uWqxoQc/k/XycISLoEu3ll+51nyMm1gtZncFE3KHxoqBJ+rJa?= =?us-ascii?Q?F+9HP/EUNoOee4FpxyPTl01yu7+3mriXj+MKLLpTVrH2MbgTytrRo7swlAYi?= =?us-ascii?Q?zbMiU0xh/zDP3g1luYzis77H6xakMNh0wbRv+sCoaGUAN1YoGupC1GYSpoW5?= =?us-ascii?Q?fTLdM6UENgg30Jrq9F1nXoANnlHyn+Mdc9BgMQ/9noc/dAXBuHycClSOk1G2?= =?us-ascii?Q?LBJIB7/LApmjW9ptGFs=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9452.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7b41765-bb05-4693-9ac4-08dc4ef3def0 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2024 06:54:10.3785 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qN2tD1e9hXsjNjmqmsjU+QvhiqYlAAMX2oteaY947Qkm8MZdtnm9ot3oGJ/X9xvT6g5Q19iD7xnXe6aHvv/KXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7288 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: Wed, 27 Mar 2024 23:54:14 -0700 Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: tRjuTC5fc4QJmtmHfFLu4wwDx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" 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="r/P79ARO"; 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 [AMD Official Use Only - General] Hi @Mike Maslenkin, would you like to review this patch again as I addresse= d your comments in V5 patch set. Thanks Abner > -----Original Message----- > From: Nickle Wang > Sent: Tuesday, March 26, 2024 8:14 PM > To: Chang, Abner ; devel@edk2.groups.io > Cc: Igor Kulchytskyy > Subject: RE: [edk2-redfish-client][PATCH V5 1/2] RedfishClientPkg: Set > SettingsObject URI as the config language > > Caution: This message originated from an External Source. Use proper caut= ion > when opening attachments, clicking links, or responding. > > > Thanks for working on this, Abner. > > > Reviewed-by: Nickle Wang > > Regards, > Nickle > > > -----Original Message----- > > From: abner.chang@amd.com > > Sent: Friday, March 22, 2024 10:41 PM > > To: devel@edk2.groups.io > > Cc: Igor Kulchytskyy ; Nickle Wang > > Subject: [edk2-redfish-client][PATCH V5 1/2] RedfishClientPkg: Set > SettingsObject > > URI as the config language > > > > External email: Use caution opening links or attachments > > > > > > From: Abner Chang > > > > Set SettingsObject URI in @Redfish.Settings resource as the config lang= uage > > which is the same as the config language of parent URI that mandates > > @Redfish.Settings. > > With this, we can find the config language of the properties in Setting= sObject > URI. > > > > Signed-off-by: Abner Chang > > Cc: Igor Kulchytskyy > > Co-authored-by: Nickle Wang > > --- > > .../Library/RedfishFeatureUtilityLib.h | 17 ++++ > > .../RedfishFeatureUtilityLib.c | 89 ++++++++++++++++--- > > .../RedfishConfigLangMapDxe.c | 15 +++- > > 3 files changed, 104 insertions(+), 17 deletions(-) > > > > diff --git a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.= h > > b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > > index ba9ea01501..3c5f248eb7 100644 > > --- a/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > > +++ b/RedfishClientPkg/Include/Library/RedfishFeatureUtilityLib.h > > @@ -369,6 +369,23 @@ RedfishSetRedfishUri ( > > IN EFI_STRING Uri > > ); > > > > +/** > > + > > + Save Redfish SettingsObject URI in database for further use. > > + > > + @param[in] ParentUri Parent URI of @Redfish.Settings prop= erty. > > + @param[in] SettingObjectUri Redfish SettingsObject Uri to save. > > + > > + @retval EFI_INVALID_PARAMETER SystemId is NULL or EMPTY > > + @retval EFI_SUCCESS Redfish uri is saved > > + > > +**/ > > +EFI_STATUS > > +SetRedfishSettingsObjectsUri ( > > + IN EFI_STRING ParentUri, > > + IN EFI_STRING SettingObjectUri > > + ); > > + > > /** > > > > Get the property name by given Configure Language. > > diff --git > > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c > > b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c > > index cc2b37b796..dda80c4608 100644 > > --- > > a/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtili= tyLib.c > > +++ b/RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureU= t > > +++ ilityLib.c > > @@ -2082,7 +2082,6 @@ GetConfigureLang ( > > EFI_STRING ResultStr; > > EFI_STRING UnicodeUri; > > EFI_STATUS Status; > > - EFI_STRING StrFound; > > > > if (IS_EMPTY_STRING (Uri)) { > > return NULL; > > @@ -2101,18 +2100,6 @@ GetConfigureLang ( > > } > > > > ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); > > - if (ConfigLang =3D=3D NULL) { > > - // > > - // @Redfish.Settings share the same schema as its parent. > > - // Remove "Settings" and try again. > > - // > > - StrFound =3D StrStr (UnicodeUri, L"/Settings"); > > - if (StrFound !=3D NULL) { > > - StrFound[0] =3D L'\0'; > > - DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI, try= : > %s\n", > > __func__, UnicodeUri)); > > - ConfigLang =3D RedfishGetConfigLanguage (UnicodeUri); > > - } > > - } > > > > FreePool (UnicodeUri); > > > > @@ -2172,6 +2159,64 @@ RedfishSetRedfishUri ( > > return mConfigLangMapProtocol->Set (mConfigLangMapProtocol, ConfigLa= ng, > > Uri); } > > > > +/** > > + > > + Save Redfish SettingsObject URI in database for further use. > > + > > + @param[in] ParentUri Parent URI of @Redfish.Settings prop= erty. > > + @param[in] SettingObjectUri Redfish SettingsObject Uri to save. > > + > > + @retval EFI_INVALID_PARAMETER ParentUri or SettingObjectUri is NUL= L. > > + @retval EFI_NOT_FOUND Config language for ParentUri is not= found. > > + @retval EFI_SUCCESS Redfish URI is saved with correspond= ing > > + config language. > > + > > +**/ > > +EFI_STATUS > > +SetRedfishSettingsObjectsUri ( > > + IN EFI_STRING ParentUri, > > + IN EFI_STRING SettingObjectUri > > + ) > > +{ > > + EFI_STATUS Status; > > + EFI_STRING ConfigLang; > > + > > + if ((ParentUri =3D=3D NULL) || (SettingObjectUri =3D=3D NULL)) { > > + return EFI_INVALID_PARAMETER; > > + } > > + > > + // > > + // Check if the SettingsObject URI already in the database. > > + // > > + Status =3D EFI_SUCCESS; > > + ConfigLang =3D RedfishGetConfigLanguage (SettingObjectUri); if > > + (ConfigLang =3D=3D NULL) { > > + // > > + // No config language of SettingsObject URI is found. > > + // Get the config language of parent URI because the data model of > > + // SettingsObject URI resource is the same as the data model of pa= rent URI. > > + // > > + ConfigLang =3D RedfishGetConfigLanguage (ParentUri); > > + if (ConfigLang =3D=3D NULL) { > > + DEBUG ((DEBUG_ERROR, "%a: Failed to get the config language of p= arent > > URI that mandates SettingsObject - %s.\n", __func__, ParentUri)); > > + Status =3D EFI_NOT_FOUND; > > + } else { > > + > > + // Set the config language of settings URI using parent's URI co= nfig > language. > > + Status =3D RedfishSetRedfishUri (ConfigLang, SettingObjectUri); > > + if (EFI_ERROR (Status)) { > > + DEBUG ((DEBUG_ERROR, "%a: Fails to set the config language of > > SettingsObject - %s.\n", __func__, SettingObjectUri)); > > + } else { > > + DEBUG ((DEBUG_INFO, "%a: Set the config language of SettingsOb= ject - > %s: > > SUCCESS.\n", __func__, SettingObjectUri)); > > + } > > + FreePool (ConfigLang); // Free the ConfigLang of parent URI. > > + } > > + } else { > > + FreePool (ConfigLang); // Free the ConfigLang of SettingObject URI= . > > + } > > + return Status; > > +} > > + > > /** > > > > Get @odata.id from give HTTP payload. It's call responsibility to re= lease > > returned buffer. > > @@ -3532,6 +3577,7 @@ CompareRedfishBooleanArrayValues ( > > payload and URI to pending settings. Caller has to release "SettingP= ayload" > and > > "SettingUri". > > > > + @param[in] RedfishService Instance of REDFISH_SERVICE > > @param[in] Payload Payload that may contain "@Redfish.Setti= ngs" > > @param[out] SettingPayload Payload keeps pending settings. > > @param[out] SettingUri URI to pending settings. > > @@ -3552,6 +3598,7 @@ GetPendingSettings ( > > EDKII_JSON_VALUE JsonValue; > > UINTN Index; > > EFI_STATUS Status; > > + EFI_STRING StrFound; > > > > if ((RedfishService =3D=3D NULL) || (Payload =3D=3D NULL) || (Settin= gResponse =3D=3D > NULL) > > || (SettingUri =3D=3D NULL)) { > > return EFI_INVALID_PARAMETER; > > @@ -3586,6 +3633,22 @@ GetPendingSettings ( > > return Status; > > } > > > > + // > > + // Setting URI exists, check if settings URI is valid or not. > > + // > > + StrFound =3D StrStr (*SettingUri, L"/Settings"); > > + if (StrFound !=3D NULL) { > > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"Settings\" found in URI: %s\= n", > > __func__, *SettingUri)); > > + } else { > > + StrFound =3D StrStr (*SettingUri, L"/SD"); > > + if (StrFound !=3D NULL) { > > + DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"SD\" found in URI: %s\n", > > __func__, *SettingUri)); > > + } else { > > + DEBUG ((DEBUG_ERROR, "%a: Not an valid @redfish.settings URI\n= ", > > __func__, *SettingUri)); > > + ASSERT (FALSE); > > + } > > + } > > + > > return EFI_SUCCESS; > > } > > > > diff --git > > a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c > > b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c > > index 8c93044580..4071e30c17 100644 > > --- a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.= c > > +++ > b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c > > @@ -2,6 +2,7 @@ > > > > (C) Copyright 2022 Hewlett Packard Enterprise Development LP
> > Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights > > reserved. > > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights > > + reserved.
> > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > @@ -606,10 +607,16 @@ RedfishConfigLangMapSet ( > > Status =3D EFI_NOT_FOUND; > > Target =3D FindConfigLangMapRecord (&Private->ConfigLangList.ListHea= der, > > ConfigLang, FALSE); > > if (Target !=3D NULL) { > > - // > > - // Remove old one and create new one. > > - // > > - Status =3D DeleteConfigLangMapRecord (&Private->ConfigLangList, Ta= rget); > > + if (Uri !=3D NULL) { > > + if (StrCmp (Uri, Target->Uri) =3D=3D 0) { > > + return EFI_SUCCESS; > > + } > > + } else { > > + // > > + // Remove old one and create new one. > > + // > > + Status =3D DeleteConfigLangMapRecord (&Private->ConfigLangList, = Target); > > + } > > } > > > > // > > -- > > 2.37.1.windows.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 (#117194): https://edk2.groups.io/g/devel/message/117194 Mute This Topic: https://groups.io/mt/105086466/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-