From nobody Mon Sep 16 19:22:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+101126+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+101126+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1678727913; cv=none; d=zohomail.com; s=zohoarc; b=nFtQVsGPBePcLUNtRac2zDK8swZgEYPyx2blVmuP/9XuFrVhDKL6J6UPEFlNgkhkDb+yjxDBys1WAstVJ1VOeX3sOYCKb76U5k+XOK9fhHZDeK4L9FZvZergfdRfXLMiuQCsoPXjJhP/NdvENC4Dh1J1McWy9FCrpbJF8q0rd5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678727913; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=HPiZa02AlQkgY+2dNwRWKVNkVsRs3zqwz/gIPgHCrbg=; b=kY2U6TNbhU2A+siVkK2e53V0/4fMjmNRCIF/fTd5vG0cKS0BnPqua0INYjWqEut+h4Ns0yigbJ1QbvYjhZz74QimgM/nLmUxp6FLkwkvY1y5MfXQxOQ51SDsw/KHSf2IX1oOXz0jhZwShaf9V44bz3pnHWWAA6KrKQqj1jUo/VA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+101126+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1678727913681688.1528896226137; Mon, 13 Mar 2023 10:18:33 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id aHrSYY1788612xBuKC96cEEZ; Mon, 13 Mar 2023 10:18:33 -0700 X-Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by mx.groups.io with SMTP id smtpd.web11.26499.1678727912836852482 for ; Mon, 13 Mar 2023 10:18:32 -0700 X-Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 5DFF861314; Mon, 13 Mar 2023 17:18:32 +0000 (UTC) X-Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8B26AC4339C; Mon, 13 Mar 2023 17:18:29 +0000 (UTC) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael Kinney , Liming Gao , Jiewen Yao , Michael Kubacki , Sean Brogan , Rebecca Cran , Leif Lindholm , Sami Mujawar , Taylor Beebe Subject: [edk2-devel] [PATCH v5 22/38] MdeModulePkg/PcdPeim: Permit unshadowed execution Date: Mon, 13 Mar 2023 18:16:58 +0100 Message-Id: <20230313171714.3866151-23-ardb@kernel.org> In-Reply-To: <20230313171714.3866151-1-ardb@kernel.org> References: <20230313171714.3866151-1-ardb@kernel.org> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,ardb@kernel.org X-Gm-Message-State: xNSgzGWfRIyxIWrxbgnGM5JFx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678727913; bh=wCE8t3bK4NGiEbvk0O+irPF2SOE2o2Clzfo+ML9Ef9M=; h=Cc:Date:From:Reply-To:Subject:To; b=YljfILXtVW3hd6nOwH+KOzBVGVC/a4Osfq5zCsyfWIu2Je8w88oTECkcQ0maIGhXhqC F2tcCsYtRcSvLg40GIL03XCTOGqTTNFf2/5kTyQpH191X6CjuCJVb+G/1fJNPRO0jicYt ZaS47lQ6NXvEpLRETmG9J8LdtBgNk8vOCyI= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678727914156100001 Content-Type: text/plain; charset="utf-8" PEIM shadowing is optional, but the PCD PEIM does so explicitly, seemingly without a functional need. So make this behavior dependent on the existing PCD, which is generally (and by default) set to TRUE, whereas some systems (such as ARM virtual machines) may prefer to disable shadowing. Signed-off-by: Ard Biesheuvel --- MdeModulePkg/Universal/PCD/Pei/Pcd.c | 112 ++++++++++---------- MdeModulePkg/Universal/PCD/Pei/Pcd.inf | 1 + 2 files changed, 58 insertions(+), 55 deletions(-) diff --git a/MdeModulePkg/Universal/PCD/Pei/Pcd.c b/MdeModulePkg/Universal/= PCD/Pei/Pcd.c index c51ac96a32e3..632254f1c5fa 100644 --- a/MdeModulePkg/Universal/PCD/Pei/Pcd.c +++ b/MdeModulePkg/Universal/PCD/Pei/Pcd.c @@ -346,73 +346,75 @@ PcdPeimInit ( { EFI_STATUS Status; =20 - Status =3D PeiServicesRegisterForShadow (FileHandle); - if (Status =3D=3D EFI_ALREADY_STARTED) { - // - // This is now starting in memory, the second time starting. - // - EFI_PEI_PPI_DESCRIPTOR *OldPpiList; - EFI_PEI_PPI_DESCRIPTOR *OldPpiList2; - VOID *Ppi; - VOID *Ppi2; + if (PcdGetBool (PcdShadowPeimOnBoot)) { + Status =3D PeiServicesRegisterForShadow (FileHandle); + if (Status =3D=3D EFI_ALREADY_STARTED) { + // + // This is now starting in memory, the second time starting. + // + EFI_PEI_PPI_DESCRIPTOR *OldPpiList; + EFI_PEI_PPI_DESCRIPTOR *OldPpiList2; + VOID *Ppi; + VOID *Ppi2; =20 - OldPpiList =3D NULL; - Status =3D PeiServicesLocatePpi ( - &gPcdPpiGuid, - 0, - &OldPpiList, - &Ppi - ); - ASSERT_EFI_ERROR (Status); - - if (OldPpiList !=3D NULL) { - Status =3D PeiServicesReInstallPpi (OldPpiList, &mPpiList[0]); + OldPpiList =3D NULL; + Status =3D PeiServicesLocatePpi ( + &gPcdPpiGuid, + 0, + &OldPpiList, + &Ppi + ); ASSERT_EFI_ERROR (Status); - } =20 - OldPpiList2 =3D NULL; - Status =3D PeiServicesLocatePpi ( - &gGetPcdInfoPpiGuid, - 0, - &OldPpiList2, - &Ppi2 - ); - ASSERT_EFI_ERROR (Status); + if (OldPpiList !=3D NULL) { + Status =3D PeiServicesReInstallPpi (OldPpiList, &mPpiList[0]); + ASSERT_EFI_ERROR (Status); + } =20 - if (OldPpiList2 !=3D NULL) { - Status =3D PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[0]); + OldPpiList2 =3D NULL; + Status =3D PeiServicesLocatePpi ( + &gGetPcdInfoPpiGuid, + 0, + &OldPpiList2, + &Ppi2 + ); ASSERT_EFI_ERROR (Status); - } =20 - OldPpiList =3D NULL; - Status =3D PeiServicesLocatePpi ( - &gEfiPeiPcdPpiGuid, - 0, - &OldPpiList, - &Ppi - ); - ASSERT_EFI_ERROR (Status); + if (OldPpiList2 !=3D NULL) { + Status =3D PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[0]); + ASSERT_EFI_ERROR (Status); + } =20 - if (OldPpiList !=3D NULL) { - Status =3D PeiServicesReInstallPpi (OldPpiList, &mPpiList[1]); + OldPpiList =3D NULL; + Status =3D PeiServicesLocatePpi ( + &gEfiPeiPcdPpiGuid, + 0, + &OldPpiList, + &Ppi + ); ASSERT_EFI_ERROR (Status); - } =20 - OldPpiList2 =3D NULL; - Status =3D PeiServicesLocatePpi ( - &gEfiGetPcdInfoPpiGuid, - 0, - &OldPpiList2, - &Ppi2 - ); - ASSERT_EFI_ERROR (Status); + if (OldPpiList !=3D NULL) { + Status =3D PeiServicesReInstallPpi (OldPpiList, &mPpiList[1]); + ASSERT_EFI_ERROR (Status); + } =20 - if (OldPpiList2 !=3D NULL) { - Status =3D PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[1]); + OldPpiList2 =3D NULL; + Status =3D PeiServicesLocatePpi ( + &gEfiGetPcdInfoPpiGuid, + 0, + &OldPpiList2, + &Ppi2 + ); ASSERT_EFI_ERROR (Status); - } =20 - return Status; + if (OldPpiList2 !=3D NULL) { + Status =3D PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[1]); + ASSERT_EFI_ERROR (Status); + } + + return Status; + } } =20 BuildPcdDatabase (FileHandle); diff --git a/MdeModulePkg/Universal/PCD/Pei/Pcd.inf b/MdeModulePkg/Universa= l/PCD/Pei/Pcd.inf index 7152a7d53b7d..a820ace70ec2 100644 --- a/MdeModulePkg/Universal/PCD/Pei/Pcd.inf +++ b/MdeModulePkg/Universal/PCD/Pei/Pcd.inf @@ -343,6 +343,7 @@ [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry ## = SOMETIMES_CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer ## SOMETIMES= _CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdSetNvStoreDefaultId ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnBoot ## CONSUMES =20 [Depex] TRUE --=20 2.39.2 -=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 (#101126): https://edk2.groups.io/g/devel/message/101126 Mute This Topic: https://groups.io/mt/97586027/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-