From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id 188E1740035 for ; Mon, 15 Jul 2024 14:32:10 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=hsF5nKao7dOzWC1zBvQrcFj+rGJFeP0nV9xiPWjzs4o=; c=relaxed/simple; d=groups.io; h=Message-ID:Date:User-Agent:From:To:Cc:References:Subject:In-Reply-To:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20240206; t=1721053930; v=1; b=H5cojFzAxcCYeDCmXKs12Aa//SILH8ir546t6pEss+d9cst5HqHygGXpx3y5fNJ2bXp0F4KP B5wxjSIUavqbtWLC/NyP+HsNOgA06SRWGWmNeza2lhhrP7gDd6QGwIHnLImZphoSfeqQWQ14qBI ztU7VO3GuXdrZeMCWDV/SJLT7ZpGkdhJ77K9UvKyzA8yBwCoIfp0kNJOIdzruL9y2OLuKVgS8/J ysAyH9yNgdJXGbP8NilAg2NqcD91f7X0s1+/0WtbASDjOeP9Y56mRA5BU7sccfwqoWs/FsqdUTP dkVwgXNKXR9UvRUe8iv6WvQTFBTsAq07WfUN4bx3Gkwkw== X-Received: by 127.0.0.2 with SMTP id 5sgIYY7687511x2e3ANKZUF6; Mon, 15 Jul 2024 07:32:09 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.61]) by mx.groups.io with SMTP id smtpd.web10.39594.1721053928803563155 for ; Mon, 15 Jul 2024 07:32:09 -0700 X-Received: from BL1PR12MB5732.namprd12.prod.outlook.com (2603:10b6:208:387::17) by MN2PR12MB4253.namprd12.prod.outlook.com (2603:10b6:208:1de::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.28; Mon, 15 Jul 2024 14:32:05 +0000 X-Received: from BL1PR12MB5732.namprd12.prod.outlook.com ([fe80::bf0:d462:345b:dc52]) by BL1PR12MB5732.namprd12.prod.outlook.com ([fe80::bf0:d462:345b:dc52%7]) with mapi id 15.20.7762.027; Mon, 15 Jul 2024 14:32:05 +0000 Message-ID: <7dc6b311-69d0-69c6-77ee-65b945ee1b5c@amd.com> Date: Mon, 15 Jul 2024 09:32:03 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 From: "Lendacky, Thomas via groups.io" To: wojiaohanliyang@163.com, devel@edk2.groups.io Cc: erdemaktas@google.com, jejb@linux.ibm.com, jiewen.yao@intel.com, min.m.xu@intel.com, kraxel@redhat.com References: <20240714122455.136148-1-wojiaohanliyang@163.com> <20240714122455.136148-2-wojiaohanliyang@163.com> <5c722bb7-e1cb-9f4d-f9e2-48b0a99db781@amd.com> Subject: Re: [edk2-devel] [PATCH 1/3] OvmfPkg/PlatformInitLib: Detect FlashNvVarStore before validate it In-Reply-To: <5c722bb7-e1cb-9f4d-f9e2-48b0a99db781@amd.com> X-ClientProxiedBy: SN7PR04CA0161.namprd04.prod.outlook.com (2603:10b6:806:125::16) To BL1PR12MB5732.namprd12.prod.outlook.com (2603:10b6:208:387::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL1PR12MB5732:EE_|MN2PR12MB4253:EE_ X-MS-Office365-Filtering-Correlation-Id: 36abe66c-b0c6-4979-6515-08dca4dae65d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: =?utf-8?B?citPQm8yWGh4V3BtcmpvazI4TlpGdzBNaG4vRDkzOGRuMGJqZEJZMUxFOS94?= =?utf-8?B?MFVHTDJWdERTMC9XMUtjNVJERXk2cUtqVDV6SHRMVDM0TTdLRzlLUjVyZVcv?= =?utf-8?B?dm5vL0VZcFU0YTRvWnMrYW9ETE1xS016YThmSU44TmVybGF6RS82bjNSRm5x?= =?utf-8?B?L1lvbXpSZHg5TUlCeE1CQUlRU2UzNzdoUXNCMmtlRGFlTkJ6b0t4L1FpcDEv?= =?utf-8?B?ZUtZTUU1SFlnc2pYQktHelUyZXhwSkxScDNsRHRVSFl3Z0lORFROanBCRDNC?= =?utf-8?B?Q3VnSFpOUWNZVjVHRUM2OG5SRWl5QnVPdFJDbVdnOTZUSnpCcVp4Ty8xRzhH?= =?utf-8?B?TUJ0KzRCSlJpTXNvb3dmMkZOTTl1N2ducDVmTlpDSm1aeFhVelREVVRTZnoz?= =?utf-8?B?bmk2YnVJQ3VYQ21XZFJzNHhESU5QcG9qV0hWUFMzNFBzZjJQSnI0WjI1UUdS?= =?utf-8?B?dGpYNkE0TkdpcGkyNEJabXA3OW5WY21ZNGp6OXkvWXRMdHo4dmFsbXMrVlFY?= =?utf-8?B?cGJPMHNDdHV3MmRtVFhvM2VLWmpadEN6dnZhTVpBZTJKb2hXY0o2czNWN2tt?= =?utf-8?B?N3NleklXK2pQdEF4c2E3cEFnd1lSdS96T1hSNzk0OVFKVUx0TFd2bjNPNEc2?= =?utf-8?B?SWpXVUhUNm9rTmM4T3VHa3piVjdJOE5EMzJBSk9BVXJIcWcyVFg3U3F5dGFS?= =?utf-8?B?NXFMNTBUaVY1czBGRVdFejZmRWxmelB2MWFON3JEOWtBdndvYTlJbVBaSjZi?= =?utf-8?B?Z0kwRVVCSXFJSlExNlpsM3hlSXhYVHhCUVkzMytCT3JPWkdYekFPTVAzdklu?= =?utf-8?B?T281S090d3ZtRnlNZDVZeFByWitPa2lZQ3NFOFZET3lWQTJkdDRZT1hsWHRD?= =?utf-8?B?dUtXRGsyZkxiNkplWDg3VXFyQ2FmWGwyRVNPa29HSjN2RWVsaXpQaHVjYWVF?= =?utf-8?B?aUZLSElhLzQvT00xOWM2clEwbWIzVENrb0FnU204dFZES3cwUWNwZEJ6Yzh4?= =?utf-8?B?QVlhT3pnckF4WDFDVFRNSThXci9UelJCUHJpVXVPSFFKb2Rhb2RwclE1RDBt?= =?utf-8?B?N2x3bWFUUWFLQ3FwUjNXMDZyQndpMEdGdGc0N2d4NktDMTR5WWJuMTUvdnhS?= =?utf-8?B?QVhJK3NyZjgwcDlMcEh0NndtU1ZFVDBXUFFOT1dzV3lwWnVXZnBuNW44M1pJ?= =?utf-8?B?ZE4rY0MwNlNWNFQvbG1DWVFHQTg4SC9iQ2VkL0NDZGMzTlN1N21SSS9zRHZX?= =?utf-8?B?QzQwQzRzbzNYWkdZVVo3YjhBUVdoNStZYzZsTDBjTjV2RCtPMVRCOTNHWDJa?= =?utf-8?B?SEtJSllRQXh3WGNNTFFteVkxbm1QVXRvRXh5Z0phbWxPUDJsTlVReXdXbVox?= =?utf-8?B?ZzFyRkVNOHcxbjFJUDFKY29BWGVuNmtaZlpQS2tnd0RBekwyeFVmOVhlWXlj?= =?utf-8?B?QzV6WU9IUUdKN21wQ0pTdVlmZWo3M2Q3QjNXZHlqem1sUUxqSEhOdU9GVTVm?= =?utf-8?B?SFNlY1d0bS8rbWVvUGpSdVVsYUlCdkFqallCakZrQzVSbUV3dmk3Zi94SnJX?= =?utf-8?B?MVM0VnpjOEhzQU9QdEs5WHFtVVExYXRicERibDBURHI4YkJiWnFhOTdWSWZs?= =?utf-8?B?bHJ6NlRCVWVjM2MvajAyYkZyQUw3bW9xZlF2Z0VvakNHT2EwK2NDWWFtOG1G?= =?utf-8?B?OUhEUFNUR1FFZGllTEorRVAxaG9UeFhCeTlsZmh5aC9QMTBSMzU3cjEvTnNE?= =?utf-8?Q?dPKyPha6Ja7FeV3agg=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aE5KUEN0NjdWVHp6b2RJRGNlWDd0cXNhZ1hiVWFQMU1EZjkwdk9XdTZ1RkdP?= =?utf-8?B?bVBPaWExQkJDZG9tTHRTVnJvZVd0dVU3eE1USjN0Yi9mb2dEK3BjZ21rRGxO?= =?utf-8?B?VkphKzZ1dGFGeFdJRkVOa0hNdjllVTlDZXFmWnBCbjl6c0IvUU12Sm1RdW0v?= =?utf-8?B?SitXamVQSlovSzgwUkpjM3ZXL2lQM0pkYXNQYlc4WXZKaDhOTmZlb1dUZ0Yy?= =?utf-8?B?Y25rVm5ZVnBzNTlROFBNRkduYTZoeTFOaG9NWisvVEtuUjZwNGVvL2JpZFRC?= =?utf-8?B?RzVheGJXNzh3a1U3MDdhRCtwV04rVU5sUWNMamVQbU01Ykp1bHIzNWVFRURW?= =?utf-8?B?ZExXRDI1UEVuNjdMOEh4bjFaTGY2TjJMV0t1L0RKU1BLMm5nWUdESHhCRTVi?= =?utf-8?B?aVZrem1nbVRLMXBXNGd3WDJzUzF2WjhCSkJvS0x4VmNtMU9mclY0Mm9SakRZ?= =?utf-8?B?VTJ2TjFVMXg2bkFxZTVpczJJVGxEbHpsMm1rT0JtbFU1am1ENTlYNXFtV0ty?= =?utf-8?B?ZWpVWUtjNE85bnZVaTJ1UlpSd0xzMnZrM1F1ZlgwZmMzd3A5MWZoUkdFYWY4?= =?utf-8?B?b2xjeVFLbGtHd1haU0FIQko0SW9zVjdtcm44RFR1YU1uWlBhVHBlLzVJUXU2?= =?utf-8?B?VWMvckJOV000NFpWMEJCZXI4OEtPbUtCTlc2TkFBbndscGZNWDU5dTA2L3Fs?= =?utf-8?B?T3FWbWhWQW9mM0p3eWlkQjAwSEcwZkZPd1BDWG1MK1lkeUhUK1RDejl6VW5N?= =?utf-8?B?ZjFtSEY0THRjWmI2cXFIQlk5MEZJZVV6ekc4Sml6S1VpZHJpMDhJdnBnVWlB?= =?utf-8?B?NWw5bERkNmlFZGkyRmhqc0pCME1GTktUK3BMRHlyREZNbHBCc0paTE1qSU1E?= =?utf-8?B?NVQ2RjErY3ZaWW1OOEZNVkFieStlY3d5Z3VwQ2IwSGY3c3B0SGlJeFR4YWF3?= =?utf-8?B?aTV3dG9JRGtiajk0Zmk0UlUydDdCdDVLT3RQZnZVa2hvbktaY1Rjb056eTZp?= =?utf-8?B?YWFlQ0FTdEtLL2tnbHowQkdZRmZxNGRmZVBjT05ESHJCVytHV2lCTGVudlNK?= =?utf-8?B?cDFXaGYraG5YOWlhWFdwZVRIbXpEamdVT25pbXIzSTdIbVpyY2JKdXVHMmdL?= =?utf-8?B?S3NXMGQ5SUVsVDQ4c0U0SmZRMDRSa01ZUE54a01JOHRJVVZlU0V3VCtVTGJk?= =?utf-8?B?YjhYV0t2LzBOc2xRTXZkd2lOZjdtVWNCWkZDTklDSWtNbVNiRjJ4eDY2WlBQ?= =?utf-8?B?TzJPVHRnaUxEdlpQS2tIMDZVd0tTcWUxTmE1VjVQVGtiMVZTN0tyVitncGtv?= =?utf-8?B?RUN1RmRESVU4SDFleGJ1Zm1CeUd5NUtrRE02YlRVNmRmdk5LREdUSExSNFZl?= =?utf-8?B?eVZnTTBOU0NybUJ4S3NWdTFFZGFvajVUTXFvQnZpdzNKcWx4NkdtVWxmN25Y?= =?utf-8?B?VkROUnlwaHRMK2RELzV2cWVOSHRXVU9lNTQwM00rb3hhQVZvemJLdmptalNY?= =?utf-8?B?eVhyNFZQRzA5VnNLaTB2d0xScVBFeHVNeUZhVEV6WG51TEZtK2xTVVI3OWxq?= =?utf-8?B?Sm5jZGxjRlNUUHFIdVVWdEl5Q0JodnlTdWNEbTVsZncvUzgrUFlQMXlPcWNl?= =?utf-8?B?T0lXbEh3TUI3cWFOR3NldExXREUwdjRCOFBLemR0ZXRuZU4xdWVzblVqMEZB?= =?utf-8?B?c2ZYK3J1T0dQZHY3ay92dXFLcnNkOG9lRjk0bHBLbmhreFFQdEZRSkxmOWpB?= =?utf-8?B?TmF0UE9OcUxra3YyK0N5Yi95ZGV1dUF4alJUSUN3emRKOXJPQlhpYzdxVDdU?= =?utf-8?B?bytxaCs5eWxUWkxUa0FEdkpERXkvbEV2eE5sUCt1SjI5cDRyYTlhL3orcS9P?= =?utf-8?B?Um5HSXV5SmJCZ1NQK2U5bDNsbjRZb3ZveXdZRUxRd2paUEhkeGlEMUtiUWIr?= =?utf-8?B?cUdmQm5HK1hpeFhrYmw2YzZqQi9oQTJudlk4Z0xBV29xQlJHY0ttLzhzZDVS?= =?utf-8?B?RXZET0kzZnpCVUUvcWxHaUpDZHBWd05IZnAyZ202cmxITkUyaitrUlgvakpT?= =?utf-8?B?R1I3Q1cxMy9kaFlOZERmZmZOeDh1TWJ5aVVIdkNPcldhYStKZDB5ODRqQ3Ru?= =?utf-8?Q?+Wq2+FxiQDiZJfXjpPC8uMReb?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36abe66c-b0c6-4979-6515-08dca4dae65d X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5732.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2024 14:32:05.6102 (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: gQccc6pXXTtkDsfzSfrpcEkDaWEh+ld+Rui8qas5oZvn/fA88SBB2aZpD49pg7kGePy5uwkhZ8/GEW6BqI9TQA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4253 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: Mon, 15 Jul 2024 07:32:09 -0700 Resent-From: thomas.lendacky@amd.com Reply-To: devel@edk2.groups.io,thomas.lendacky@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: NwVi43y8wl0l7m95XbtvXnoCx7686176AA= Content-Language: en-US Content-Type: text/plain; charset=UTF-8 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=H5cojFzA; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io On 7/15/24 09:15, Tom Lendacky wrote: > On 7/14/24 07:24, wojiaohanliyang@163.com wrote: >> From: hanliyang >> >> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4807 >> >> The commit 4f173db8b45b ("OvmfPkg/PlatformInitLib: Add functions for >> EmuVariableNvStore") rename the function from TdxValidateCfv to >> PlatformValidateNvVarStore. >> >> PlatformValidateNvVarStore is placed in the PlatformInitLib and is used >> in the case that OVMF is launched with -bios parameter and to validate >> the integrity of FlashNvVarStore. But if we launch a VM without >> FlashNvVarStore, the PlatformValidateNvVarStore will fail to validate >> the integrity and will trigger ASSERT (FALSE) in >> PlatformInitEmuVariableNvStore. >> >> In order to prevent calls to PlatformValidateNvVarStore in the case lack >> of FlashNvVarStore, we should detect FlashNvVarStore before calls to >> PlatformValidateNvVarStore. If fail to detect FlashNvVarStore, we should >> return don't initialize the EmuVariableNvStore, otherwise calls to >> PlatformValidateNvVarStore and initialize the EmuVariableNvStore when >> succeed to validate the integrity of NvVarStore. >> >=20 > While Secure Boot isn't supported at the moment for SEV-ES / SEV-SNP, > this will cause a boot failure for those types of VMs should it be > enabled. >=20 > SEV-ES results in: >=20 > Invalid MMIO opcode (AF) > ASSERT [SecMain] /root/kernels/ovmf-build-X64/OvmfPkg/Library/CcExitLib/C= cExitVcHandler.c(498): ((BOOLEAN)(0=3D=3D1)) >=20 > while SEV-SNP just terminates with an error in Qemu. My bad, that was before this patch was applied. After applying this patch, I receive: SEV-ES: MMIO using encrypted memory: FFC00000 !!!! X64 Exception Type - 0D(#GP - General Protection) CPU Apic ID - 00000= 000 !!!! SEV-SNP just terminates as before. So maybe you need patch #3 to be the first patch in order to maintain git bisection. But after applying all 3 patches, SEV-SNP self terminates for an unsupported #VC error code - 0x404. 0x404 is from accessing a page as encrypted, but it has not been validated. Thanks, Tom >=20 > I haven't looked into what the cause is at this time. >=20 > Thanks, > Tom >=20 >> Fixes: 4f173db8b45b ("OvmfPkg/PlatformInitLib: Add functions for EmuVari= ableNvStore") >> Signed-off-by: hanliyang >> --- >> OvmfPkg/Library/PlatformInitLib/Platform.c | 47 +++++++++++++++++++ >> .../PlatformInitLib/PlatformInitLib.inf | 1 + >> 2 files changed, 48 insertions(+) >> >> diff --git a/OvmfPkg/Library/PlatformInitLib/Platform.c b/OvmfPkg/Librar= y/PlatformInitLib/Platform.c >> index f48bf16ae3..0a720a4c2c 100644 >> --- a/OvmfPkg/Library/PlatformInitLib/Platform.c >> +++ b/OvmfPkg/Library/PlatformInitLib/Platform.c >> @@ -895,6 +895,16 @@ PlatformReserveEmuVariableNvStore ( >> return VariableStore; >> } >> =20 >> +#define WRITE_BYTE_CMD 0x10 >> +#define BLOCK_ERASE_CMD 0x20 >> +#define CLEAR_STATUS_CMD 0x50 >> +#define READ_STATUS_CMD 0x70 >> +#define READ_DEVID_CMD 0x90 >> +#define BLOCK_ERASE_CONFIRM_CMD 0xd0 >> +#define READ_ARRAY_CMD 0xff >> + >> +#define CLEARED_ARRAY_STATUS 0x00 >> + >> /** >> When OVMF is lauched with -bios parameter, UEFI variables will be >> partially emulated, and non-volatile variables may lose their contents >> @@ -928,6 +938,43 @@ PlatformInitEmuVariableNvStore ( >> Size =3D (UINT32)PcdGet32 (PcdFlashNvStorageVariableSize); >> ASSERT (Size < EmuVariableNvStoreSize); >> =20 >> + // >> + // If launch a VM without OvmfFlashNvStorage device, then we'll fail >> + // to check the integrity of NvVarStore and trigger ASSERT (FALSE). >> + // So, we should detect the OvmfFlashNvStorage before calls to >> + // PlatformValidateNvVarStore(). If fail to detect OvmfFlashNvStorage= , >> + // we should return and don't initialize the EmuVariableNvStore, >> + // otherwise calls to PlatformValidateNvVarStore() and initialize the >> + // EmuVariableNvStore when succeed to check the integrity of >> + // NvVarStore. >> + // >> + // This method to detect the OvmfFlashNvStorage here references >> + // OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c. >> + // >> + volatile UINT8 *Ptr; >> + >> + UINTN BlockSize; >> + UINTN Offset; >> + UINT8 ProbeUint8; >> + >> + BlockSize =3D PcdGet32 (PcdOvmfFirmwareBlockSize); >> + >> + for (Offset =3D 0; Offset < BlockSize; Offset++) { >> + Ptr =3D Base + Offset; >> + ProbeUint8 =3D *Ptr; >> + if ((ProbeUint8 !=3D CLEAR_STATUS_CMD) && >> + (ProbeUint8 !=3D READ_STATUS_CMD) && >> + (ProbeUint8 !=3D CLEARED_ARRAY_STATUS)) >> + { >> + break; >> + } >> + } >> + >> + if (Offset >=3D BlockSize) { >> + DEBUG ((DEBUG_INFO, "OvmfFlashNvStorage: Failed to find probe locat= ion\n")); >> + return EFI_INVALID_PARAMETER; >> + } >> + >> if (!PlatformValidateNvVarStore (Base, PcdGet32 (PcdCfvRawDataSize)))= { >> ASSERT (FALSE); >> return EFI_INVALID_PARAMETER; >> diff --git a/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf b/OvmfP= kg/Library/PlatformInitLib/PlatformInitLib.inf >> index 21e6efa5e0..b7d5e63dcd 100644 >> --- a/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf >> +++ b/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf >> @@ -104,6 +104,7 @@ >> gUefiOvmfPkgTokenSpaceGuid.PcdTdxAcceptPageSize >> gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase >> gUefiOvmfPkgTokenSpaceGuid.PcdCfvRawDataSize >> + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize >> =20 >> [FeaturePcd] >> gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode -=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 (#119936): https://edk2.groups.io/g/devel/message/119936 Mute This Topic: https://groups.io/mt/107212942/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-