From nobody Mon Feb 9 15:10:49 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+56389+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+56389+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1585218292; cv=none; d=zohomail.com; s=zohoarc; b=ZEao0y709eTvTebS/OpA+WTR9l9y2jydEDWqE2QOyyU2KRYHzCXkNUsKDYgY5+fFiP9QKDhvyMjXPo9Vl90cRAUxisDoo8u0EWVIPcROnQQBRyt2yMjHqIRvCS5xrUfIfgVWORkL1fHx8KD0829SbpeRpc1fUIyUdsGWs+JmfWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585218292; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=/Kd+kSo+vgkDy2Usagl+gZhR6RE7l95Dkw25MSwP0S4=; b=hzpCwx7mWhVGgSXyiM+r52KfTTh8g67+lMcmyq3MFiLOdjSNhQM/ECRSUHoiHIDpNQB8Wsk7U7C3c5TeTxB1jZkFmH6xRuXK0JcW8MKyvGbg13HxXM4P4hUCcxRBUjqaLSHpOa0eVf95eSfnLDcx1P5qoTE7i4baOm3MVqlHAYM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+56389+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 158521829263729.35019127702776; Thu, 26 Mar 2020 03:24:52 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 775yYY1788612xBOX0OgEUS0; Thu, 26 Mar 2020 03:24:52 -0700 X-Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by mx.groups.io with SMTP id smtpd.web12.33982.1585218291521608925 for ; Thu, 26 Mar 2020 03:24:51 -0700 X-Received: by mail-wr1-f50.google.com with SMTP id 31so7048070wrs.3 for ; Thu, 26 Mar 2020 03:24:51 -0700 (PDT) X-Gm-Message-State: Fgv4YDYrSJhRXHW6Hxo5Ltoqx1787277AA= X-Google-Smtp-Source: ADFU+vsN+sjSi8WrYHngzXfLH/O/XSxmrErKOHRwdR1w3Bm0uAsvQtQCFm+vxC+9nJI9bJYCsDOAoA== X-Received: by 2002:adf:e304:: with SMTP id b4mr8655332wrj.352.1585218289583; Thu, 26 Mar 2020 03:24:49 -0700 (PDT) X-Received: from e123331-lin.home (amontpellier-657-1-18-247.w109-210.abo.wanadoo.fr. [109.210.65.247]) by smtp.gmail.com with ESMTPSA id d5sm3124511wrh.40.2020.03.26.03.24.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Mar 2020 03:24:48 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Laszlo Ersek , Leif Lindholm , Michael D Kinney , Ray Ni , Jiewen Yao , Bret Barkelew Subject: [edk2-devel] [PATCH 2/4] MdeModulePkg: disable properties table generation but retain the code Date: Thu, 26 Mar 2020 11:24:41 +0100 Message-Id: <20200326102443.748-3-ard.biesheuvel@linaro.org> In-Reply-To: <20200326102443.748-1-ard.biesheuvel@linaro.org> References: <20200326102443.748-1-ard.biesheuvel@linaro.org> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1585218292; bh=HKXzAYadlCD5Mh+APyo6XcGXA7MGZatMtMPYXYAzlCw=; h=Cc:Date:From:Reply-To:Subject:To; b=s9EpnHpKjHf6LBmJxaKcpNJ86cnict12NjgZyzKzQzlLme6JUVE/JdzClh7DYF0Ufjg jy/dx5i2E0EeuBfC6ewX4KSsModbYexd2nYSCWotBRHylpjMgQ9xwhNgu1g+rhrh3fOYa fO2zjskbCUWjIQo9Cm4v9uSq7pKKvBJl7Ns= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is the minimal change required to stop exposing the EFI properties table, which is deprecated. Given how the implementation is entangled with the code that exposes the related memory attributes table, most of the code is retained, and further cleanups are relegated to subsequent patches. Link: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2633 Signed-off-by: Ard Biesheuvel --- MdeModulePkg/Core/Dxe/DxeMain.inf | 2 - MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c | 7 +- MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 1 - MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c | 107 ++---------------= --- MdeModulePkg/MdeModulePkg.dec | 24 ----- MdeModulePkg/MdeModulePkg.uni | 21 ---- 6 files changed, 14 insertions(+), 148 deletions(-) diff --git a/MdeModulePkg/Core/Dxe/DxeMain.inf b/MdeModulePkg/Core/Dxe/DxeM= ain.inf index 61161bee28e1..75e0a968f0cf 100644 --- a/MdeModulePkg/Core/Dxe/DxeMain.inf +++ b/MdeModulePkg/Core/Dxe/DxeMain.inf @@ -120,7 +120,6 @@ [Guids] gEventExitBootServicesFailedGuid ## SOMETIMES_PRODUCES ##= Event gEfiVectorHandoffTableGuid ## SOMETIMES_PRODUCES ##= SystemTable gEdkiiMemoryProfileGuid ## SOMETIMES_PRODUCES ##= GUID # Install protocol - gEfiPropertiesTableGuid ## SOMETIMES_PRODUCES ##= SystemTable gEfiMemoryAttributesTableGuid ## SOMETIMES_PRODUCES ##= SystemTable gEfiEndOfDxeEventGroupGuid ## SOMETIMES_CONSUMES ##= Event gEfiHobMemoryAllocStackGuid ## SOMETIMES_CONSUMES ##= SystemTable @@ -180,7 +179,6 @@ [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfileMemoryType = ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfilePropertyMask = ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfileDriverPath = ## CONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdPropertiesTableEnable = ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy = ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy = ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask = ## CONSUMES diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c b/MdeModule= Pkg/Core/Dxe/Misc/MemoryAttributesTable.c index ebdeb35079a2..0b0ed4413c28 100644 --- a/MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c +++ b/MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c @@ -18,7 +18,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include =20 #include -#include =20 #include "DxeMain.h" =20 @@ -64,7 +63,7 @@ CoreGetMemoryMapWithSeparatedImageSection ( OUT UINT32 *DescriptorVersion ); =20 -extern EFI_PROPERTIES_TABLE mPropertiesTable; +BOOLEAN mMemoryAttributesTableEnable =3D TRUE; EFI_MEMORY_ATTRIBUTES_TABLE *mMemoryAttributesTable =3D NULL; BOOLEAN mMemoryAttributesTableReadyToBoot =3D FALSE; =20 @@ -96,8 +95,8 @@ InstallMemoryAttributesTable ( return; } =20 - if ((mPropertiesTable.MemoryProtectionAttribute & EFI_PROPERTIES_RUNTIME= _MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA) =3D=3D 0) { - DEBUG ((EFI_D_VERBOSE, "MemoryProtectionAttribute NON_EXECUTABLE_PE_DA= TA is not set, ")); + if (!mMemoryAttributesTableEnable) { + DEBUG ((EFI_D_VERBOSE, "Cannot install Memory Attributes Table ")); DEBUG ((EFI_D_VERBOSE, "because Runtime Driver Section Alignment is no= t %dK.\n", RUNTIME_PAGE_ALLOCATION_GRANULARITY >> 10)); return ; } diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c b/MdeModulePkg/C= ore/Dxe/Misc/MemoryProtection.c index 47edf86dfbf3..92a442f517b2 100644 --- a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c +++ b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c @@ -35,7 +35,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent =20 #include #include -#include =20 #include #include diff --git a/MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c b/MdeModulePkg/Co= re/Dxe/Misc/PropertiesTable.c index 53bb6b7c912c..6ee8a8af9098 100644 --- a/MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c +++ b/MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c @@ -23,8 +23,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include =20 -#include - #include "DxeMain.h" #include "HeapGuard.h" =20 @@ -47,18 +45,12 @@ IMAGE_PROPERTIES_PRIVATE_DATA mImagePropertiesPrivateD= ata =3D { INITIALIZE_LIST_HEAD_VARIABLE (mImagePropertiesPrivateData.ImageRecordLi= st) }; =20 -EFI_PROPERTIES_TABLE mPropertiesTable =3D { - EFI_PROPERTIES_TABLE_VERSION, - sizeof(EFI_PROPERTIES_TABLE), - EFI_PROPERTIES_RUNTIME_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA -}; - EFI_LOCK mPropertiesTableLock =3D EFI_INITIALIZE_LOCK_VARIABLE (= TPL_NOTIFY); =20 -BOOLEAN mPropertiesTableEnable; - BOOLEAN mPropertiesTableEndOfDxe =3D FALSE; =20 +extern BOOLEAN mMemoryAttributesTableEnable; + // // Below functions are for MemoryMap // @@ -359,11 +351,7 @@ SetNewRecord ( // // DATA // - if (!mPropertiesTableEnable) { - NewRecord->Type =3D TempRecord.Type; - } else { - NewRecord->Type =3D EfiRuntimeServicesData; - } + NewRecord->Type =3D TempRecord.Type; NewRecord->PhysicalStart =3D TempRecord.PhysicalStart; NewRecord->VirtualStart =3D 0; NewRecord->NumberOfPages =3D EfiSizeToPages(ImageRecordCodeSection->= CodeSegmentBase - NewRecord->PhysicalStart); @@ -376,11 +364,7 @@ SetNewRecord ( // // CODE // - if (!mPropertiesTableEnable) { - NewRecord->Type =3D TempRecord.Type; - } else { - NewRecord->Type =3D EfiRuntimeServicesCode; - } + NewRecord->Type =3D TempRecord.Type; NewRecord->PhysicalStart =3D ImageRecordCodeSection->CodeSegmentBase; NewRecord->VirtualStart =3D 0; NewRecord->NumberOfPages =3D EfiSizeToPages(ImageRecordCodeSection->= CodeSegmentSize); @@ -404,11 +388,7 @@ SetNewRecord ( // Final DATA // if (TempRecord.PhysicalStart < ImageEnd) { - if (!mPropertiesTableEnable) { - NewRecord->Type =3D TempRecord.Type; - } else { - NewRecord->Type =3D EfiRuntimeServicesData; - } + NewRecord->Type =3D TempRecord.Type; NewRecord->PhysicalStart =3D TempRecord.PhysicalStart; NewRecord->VirtualStart =3D 0; NewRecord->NumberOfPages =3D EfiSizeToPages (ImageEnd - TempRecord.Phy= sicalStart); @@ -519,14 +499,8 @@ SplitRecord ( // NewRecord =3D PREVIOUS_MEMORY_DESCRIPTOR (NewRecord, DescriptorSiz= e); IsLastRecordData =3D FALSE; - if (!mPropertiesTableEnable) { - if ((NewRecord->Attribute & EFI_MEMORY_XP) !=3D 0) { - IsLastRecordData =3D TRUE; - } - } else { - if (NewRecord->Type =3D=3D EfiRuntimeServicesData) { - IsLastRecordData =3D TRUE; - } + if ((NewRecord->Attribute & EFI_MEMORY_XP) !=3D 0) { + IsLastRecordData =3D TRUE; } if (IsLastRecordData) { // @@ -538,11 +512,7 @@ SplitRecord ( // Last record is CODE, create a new DATA entry. // NewRecord =3D NEXT_MEMORY_DESCRIPTOR (NewRecord, DescriptorSize); - if (!mPropertiesTableEnable) { - NewRecord->Type =3D TempRecord.Type; - } else { - NewRecord->Type =3D EfiRuntimeServicesData; - } + NewRecord->Type =3D TempRecord.Type; NewRecord->PhysicalStart =3D TempRecord.PhysicalStart; NewRecord->VirtualStart =3D 0; NewRecord->NumberOfPages =3D TempRecord.NumberOfPages; @@ -751,7 +721,7 @@ CoreGetMemoryMapWithSeparatedImageSection ( // // If PE code/data is not aligned, just return. // - if ((mPropertiesTable.MemoryProtectionAttribute & EFI_PROPERTIES_RUNTIME= _MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA) =3D=3D 0) { + if (!mMemoryAttributesTableEnable) { return CoreGetMemoryMap (MemoryMapSize, MemoryMap, MapKey, DescriptorS= ize, DescriptorVersion); } =20 @@ -803,12 +773,9 @@ SetPropertiesTableSectionAlignment ( ) { if (((SectionAlignment & (RUNTIME_PAGE_ALLOCATION_GRANULARITY - 1)) !=3D= 0) && - ((mPropertiesTable.MemoryProtectionAttribute & EFI_PROPERTIES_RUNTIM= E_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA) !=3D 0)) { + mMemoryAttributesTableEnable) { DEBUG ((EFI_D_VERBOSE, "SetPropertiesTableSectionAlignment - Clear\n")= ); - mPropertiesTable.MemoryProtectionAttribute &=3D ~((UINT64)EFI_PROPERTI= ES_RUNTIME_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA); - gBS->GetMemoryMap =3D CoreGetMemoryMap; - gBS->Hdr.CRC32 =3D 0; - gBS->CalculateCrc32 ((UINT8 *)gBS, gBS->Hdr.HeaderSize, &gBS->Hdr.CRC3= 2); + mMemoryAttributesTableEnable =3D FALSE; } } =20 @@ -1018,35 +985,6 @@ SortImageRecord ( } } =20 -/** - Dump image record. -**/ -STATIC -VOID -DumpImageRecord ( - VOID - ) -{ - IMAGE_PROPERTIES_RECORD *ImageRecord; - LIST_ENTRY *ImageRecordLink; - LIST_ENTRY *ImageRecordList; - UINTN Index; - - ImageRecordList =3D &mImagePropertiesPrivateData.ImageRecordList; - - for (ImageRecordLink =3D ImageRecordList->ForwardLink, Index=3D 0; - ImageRecordLink !=3D ImageRecordList; - ImageRecordLink =3D ImageRecordLink->ForwardLink, Index++) { - ImageRecord =3D CR ( - ImageRecordLink, - IMAGE_PROPERTIES_RECORD, - Link, - IMAGE_PROPERTIES_RECORD_SIGNATURE - ); - DEBUG ((EFI_D_VERBOSE, " Image[%d]: 0x%016lx - 0x%016lx\n", Index, Im= ageRecord->ImageBase, ImageRecord->ImageSize)); - } -} - /** Insert image record. =20 @@ -1323,29 +1261,6 @@ InstallPropertiesTable ( ) { mPropertiesTableEndOfDxe =3D TRUE; - if (PcdGetBool (PcdPropertiesTableEnable)) { - EFI_STATUS Status; - - Status =3D gBS->InstallConfigurationTable (&gEfiPropertiesTableGuid, &= mPropertiesTable); - ASSERT_EFI_ERROR (Status); - - DEBUG ((EFI_D_INFO, "MemoryProtectionAttribute - 0x%016lx\n", mPropert= iesTable.MemoryProtectionAttribute)); - if ((mPropertiesTable.MemoryProtectionAttribute & EFI_PROPERTIES_RUNTI= ME_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA) =3D=3D 0) { - DEBUG ((EFI_D_ERROR, "MemoryProtectionAttribute NON_EXECUTABLE_PE_DA= TA is not set, ")); - DEBUG ((EFI_D_ERROR, "because Runtime Driver Section Alignment is no= t %dK.\n", RUNTIME_PAGE_ALLOCATION_GRANULARITY >> 10)); - return ; - } - - gBS->GetMemoryMap =3D CoreGetMemoryMapWithSeparatedImageSection; - gBS->Hdr.CRC32 =3D 0; - gBS->CalculateCrc32 ((UINT8 *)gBS, gBS->Hdr.HeaderSize, &gBS->Hdr.CRC3= 2); - - DEBUG ((EFI_D_VERBOSE, "Total Image Count - 0x%x\n", mImagePropertiesP= rivateData.ImageRecordCount)); - DEBUG ((EFI_D_VERBOSE, "Dump ImageRecord:\n")); - DumpImageRecord (); - - mPropertiesTableEnable =3D TRUE; - } } =20 /** diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 91a3c608231c..aeb8b820db1b 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -1866,30 +1866,6 @@ [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynami= c, PcdsDynamicEx] # @Prompt Flag to request system reboot after processing capsule. gEfiMdeModulePkgTokenSpaceGuid.PcdSystemRebootAfterCapsuleProcessFlag|0x= 0001|UINT16|0x0000006d =20 - ## Publish PropertiesTable or not. - # - # If this PCD is TRUE, DxeCore publishs PropertiesTable. - # DxeCore evaluates if all runtime drivers has 4K aligned PE sections. I= f all - # PE sections in runtime drivers are 4K aligned, DxeCore sets BIT0 in - # PropertiesTable. Or DxeCore clears BIT0 in PropertiesTable. - # If this PCD is FALSE, DxeCore does not publish PropertiesTable. - # - # If PropertiesTable has BIT0 set, DxeCore uses below policy in UEFI mem= ory map: - # 1) Use EfiRuntimeServicesCode for runtime driver PE image code secti= on and - # use EfiRuntimeServicesData for runtime driver PE image header and= other section. - # 2) Set EfiRuntimeServicesCode to be EFI_MEMORY_RO. - # 3) Set EfiRuntimeServicesData to be EFI_MEMORY_XP. - # 4) Set EfiMemoryMappedIO and EfiMemoryMappedIOPortSpace to be EFI_ME= MORY_XP. - # - # NOTE: Platform need gurantee this PCD is set correctly. Platform shoul= d set - # this PCD to be TURE if and only if all runtime driver has seperated Co= de/Data - # section. If PE code/data sections are merged, the result is unpredicta= ble. - # - # UEFI 2.6 specification does not recommend to use this BIT0 attribute. - # - # @Prompt Publish UEFI PropertiesTable. - gEfiMdeModulePkgTokenSpaceGuid.PcdPropertiesTableEnable|FALSE|BOOLEAN|0x= 0000006e - ## Default OEM ID for ACPI table creation, its length must be 0x6 bytes = to follow ACPI specification. # @Prompt Default OEM ID for ACPI table creation. gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId|"INTEL "|VOID*|0x3000= 1034 diff --git a/MdeModulePkg/MdeModulePkg.uni b/MdeModulePkg/MdeModulePkg.uni index 2c856ed07333..2007e0596c4f 100644 --- a/MdeModulePkg/MdeModulePkg.uni +++ b/MdeModulePkg/MdeModulePkg.uni @@ -891,27 +891,6 @@ #string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFrontPageFormSetGuid_HELP #= language en-US "This PCD points to the front page formset GUID\n" = "Compare the FormsetGuid or ClassGuid with this PCD value ca= n detect whether in front page" =20 -#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPropertiesTableEnable_PROMPT= #language en-US "Publish UEFI PropertiesTable." - -#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPropertiesTableEnable_HELP = #language en-US "Publish PropertiesTable or not.\n" - = "\n" - = "If this PCD is TRUE, DxeCore publishs PropertiesTable.\n" - = "DxeCore evaluates if all runtime drivers has 4K aligned PE= sections. If all\n" - = "PE sections in runtime drivers are 4K aligned, DxeCore set= s BIT0 in\n" - = "PropertiesTable. Or DxeCore clears BIT0 in PropertiesTable= .\n" - = "If this PCD is FALSE, DxeCore does not publish PropertiesT= able.\n" - = "\n" - = "If PropertiesTable has BIT0 set, DxeCore uses below policy= in UEFI memory map:\n" - = "1) Use EfiRuntimeServicesCode for runtime driver PE image = code section and\n" - = "use EfiRuntimeServicesData for runtime driver PE image hea= der and other section.\n" - = "2) Set EfiRuntimeServicesCode to be EFI_MEMORY_RO.\n" - = "3) Set EfiRuntimeServicesData to be EFI_MEMORY_XP.\n" - = "4) Set EfiMemoryMappedIO and EfiMemoryMappedIOPortSpace to= be EFI_MEMORY_XP.\n" - = "\n" - = "NOTE: Platform need gurantee this PCD is set correctly. Pl= atform should set\n" - = "this PCD to be TURE if and only if all runtime driver has = seperated Code/Data\n" - = "section. If PE code/data sections are merged, the result i= s unpredictable.\n" - #string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdShadowPeimOnBoot_HELP #lang= uage en-US "Indicates if to shadow PEIM and PeiCore after memory is ready.<= BR>
\n" = "This PCD is used on other boot path except for S3 boot.\n" = "TRUE - Shadow PEIM and PeiCore after memory is ready.
\n" --=20 2.17.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 (#56389): https://edk2.groups.io/g/devel/message/56389 Mute This Topic: https://groups.io/mt/72560883/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-