Merged https://github.com/tianocore/edk2/pull/3572
> -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao, > Jiewen > Sent: Tuesday, November 1, 2022 5:00 PM > To: Xu, Min M <min.m...@intel.com>; devel@edk2.groups.io > Cc: Gao, Zhichao <zhichao....@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com>; Liu, Zhiguang <zhiguang....@intel.com>; > Wang, Jian J <jian.j.w...@intel.com>; Gao, Liming > <gaolim...@byosoft.com.cn>; Ni, Ray <ray...@intel.com>; Aktas, Erdem > <erdemak...@google.com>; Gerd Hoffmann <kra...@redhat.com>; James > Bottomley <j...@linux.ibm.com>; Tom Lendacky > <thomas.lenda...@amd.com>; Gao, Jiaqi <jiaqi....@intel.com> > Subject: Re: [edk2-devel] [PATCH V5 00/10] Introduce Lazy-accept for Tdx > guest > > For OvmfPkg, reviewed-by: Jiewen Yao <jiewen....@intel.com> > > > -----Original Message----- > > From: Xu, Min M <min.m...@intel.com> > > Sent: Tuesday, November 1, 2022 1:14 PM > > To: devel@edk2.groups.io > > Cc: Xu, Min M <min.m...@intel.com>; Gao, Zhichao > > <zhichao....@intel.com>; Kinney, Michael D > > <michael.d.kin...@intel.com>; Liu, Zhiguang <zhiguang....@intel.com>; > > Wang, Jian J <jian.j.w...@intel.com>; Gao, Liming > > <gaolim...@byosoft.com.cn>; Ni, Ray <ray...@intel.com>; Aktas, Erdem > > <erdemak...@google.com>; Gerd Hoffmann <kra...@redhat.com>; > James > > Bottomley <j...@linux.ibm.com>; Yao, Jiewen <jiewen....@intel.com>; > > Tom Lendacky <thomas.lenda...@amd.com>; Gao, Jiaqi > > <jiaqi....@intel.com> > > Subject: [PATCH V5 00/10] Introduce Lazy-accept for Tdx guest > > > > RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3937 > > > > UnacceptedMemory is one of the four defined types of TD memory in > Intel > > TDX guest. TDVF must invoke TDCALL [TDG.MEM.PAGE.ACCEPT] the > > unaccepted > > memory before use it. See [TDVF] Section 7.1. > > TDVF: https://www.intel.com/content/dam/develop/external/us/en/ > > documents/tdx-virtual-firmware-design-guide-rev-1.01.pdf > > > > It is a time-consuming task which impacts the boot performance badly. > > One of the mitigation is the lazy-accept mechanism. That the whole > system > > memory is divided into 2 parts, one is accepted in bios phase, the other > > is tagged as EfiGcdMemoryTypeUnaccepted and OS will handle these > > "unaccepted" memories. > > See "UEFI Spec v2.9 Table 7-5 Memory Type Usage before > > ExitBootServices()" > > > > As the first stage we accept all the memory under 4G. Please see the > > discussion in https://edk2.groups.io/g/devel/message/93086 > > > > This patch-set is related to code first, so there is a edk2-staging branch. > > Please see https://github.com/tianocore/edk2-staging/tree/TDVF > > > > Patch 1-4: > > Introduce lazy-accept related definitions. > > > > Patch 5-6: > > Update Dxe and shell for unaccepted memory. > > > > Patch 7: > > Update OvmfPkg for unaccepted memory. > > > > Patch 8 - 10: > > Introduce EfiMemoryAcceptProtocol and realize it in TdxDxe. > > > > Code: https://github.com/mxu9/edk2/tree/lazyaccept.v5 > > > > v5 changes: > > - Rebase the patch-set to commit df7ce74e6c75. > > - Add reviewed-by in MdeModulePkg/MdePkg related > patches(#1/2/4/5/8). > > - Add acked-by in patch#7. > > > > v4 changes: > > - To follow the name convention of EDKII code first, the name of > > EFI_RESOURCE_MEMORY_UNACCEPTED is updated to > > BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED. > > - Remove the definition of MaxAcceptedMemoryAddress because in > > current > > stage we will accept all the memory under 4G. So > > MaxAcceptedMemoryAddress is not useable in this assumption. > > - Because this is related to code first, there is edk2-staging branch. > > The branch link is attached. > > https://github.com/tianocore/edk2-staging/tree/TDVF > > > > v3 changes: > > - As the first stage we accept all the memory under 4G. See the > > discussion in https://edk2.groups.io/g/devel/message/93086 > > - "Pool and page functions accept memory when OOM occurs" is dropped. > > See the discussion in https://edk2.groups.io/g/devel/message/93086 > > - PlatformAdjustSystemMemorySizeBelow4gbForLazyAccep is deleted > > because in current stage we accept all the memory under 4G. > > > > v2 changes: > > - Fix a typo that change EfiUnacceptedMemory to > > EfiUnacceptedMemoryType. > > - Define EFI_GCD_MEMORY_TYPE_UNACCEPTED in PrePiDxeCis.h because > it > > has > > not been defined in PI spec. > > - AllocatePages should return EFI_INVALID_PARAMETERS if input > > MemoryType > > is EfiUnacceptedMemoryType. > > - Use EDKII_ prefix instead of EFI_ prefix in the protocol name of > > EDKII_MEMORY_ACCEPT_PROTOCOL_GUID. Because this protocol is not > > EFI > > defined. > > - Accept memory under 4G even if the PcdLazyAcceptPartialMemorySize > is > > bigger than 4G. So with this setting, even if the > > PcdLazyAcceptPartialMemorySize is 0 (which means to accept all > > memories), only the memory under 4G will be accepted. This is to > > optimize the performance. > > > > Cc: Zhichao Gao <zhichao....@intel.com> > > Cc: Michael D Kinney <michael.d.kin...@intel.com> > > Cc: Zhiguang Liu <zhiguang....@intel.com> > > Cc: Jian J Wang <jian.j.w...@intel.com> > > Cc: Liming Gao <gaolim...@byosoft.com.cn> > > Cc: Ray Ni <ray...@intel.com> > > Cc: Erdem Aktas <erdemak...@google.com> > > Cc: Gerd Hoffmann <kra...@redhat.com> > > Cc: James Bottomley <j...@linux.ibm.com> > > Cc: Jiewen Yao <jiewen....@intel.com> > > Cc: Tom Lendacky <thomas.lenda...@amd.com> > > Signed-off-by: Jiaqi Gao <jiaqi....@intel.com> > > Signed-off-by: Min Xu <min.m...@intel.com> > > > > Jiaqi Gao (1): > > MdePkg: The prototype definition of EdkiiMemoryAcceptProtocol > > > > Min M Xu (9): > > MdeModulePkg: Add PrePiHob.h > > MdePkg: Increase EFI_RESOURCE_MAX_MEMORY_TYPE > > OvmfPkg: Use BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED defined > in > > MdeModulePkg > > MdePkg: Add UEFI Unaccepted memory definition > > MdeModulePkg: Update Dxe to handle unaccepted memory type > > ShellPkg: Update shell command memmap to show unaccepted memory > > OvmfPkg: Introduce lazy accept in PlatformInitLib and PlatformPei > > OvmfPkg: Realize EdkiiMemoryAcceptProtocol in TdxDxe > > OvmfPkg: Call gEdkiiMemoryAcceptProtocolGuid to accept pages > > > > MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 6 + > > MdeModulePkg/Core/Dxe/Mem/Page.c | 63 ++++++++--- > > MdeModulePkg/Include/Pi/PrePiDxeCis.h | 25 +++++ > > MdeModulePkg/Include/Pi/PrePiHob.h | 20 ++++ > > MdePkg/Include/Pi/PiDxeCis.h | 10 +- > > MdePkg/Include/Pi/PiHob.h | 11 +- > > MdePkg/Include/Protocol/MemoryAccept.h | 37 +++++++ > > MdePkg/Include/Uefi/UefiMultiPhase.h | 5 + > > MdePkg/MdePkg.dec | 3 + > > .../BaseMemEncryptTdxLib.inf | 3 + > > .../BaseMemEncryptTdxLib/MemoryEncryption.c | 12 +- > > OvmfPkg/Library/PeilessStartupLib/Hob.c | 5 +- > > OvmfPkg/Library/PlatformInitLib/IntelTdx.c | 98 ++++++++++++++--- > > OvmfPkg/Library/PlatformInitLib/MemDetect.c | 2 + > > OvmfPkg/TdxDxe/TdxDxe.c | 103 ++++++++++++++++++ > > OvmfPkg/TdxDxe/TdxDxe.inf | 2 + > > .../UefiShellDebug1CommandsLib/MemMap.c | 13 +++ > > .../UefiShellDebug1CommandsLib.uni | 3 +- > > 18 files changed, 381 insertions(+), 40 deletions(-) > > create mode 100644 MdeModulePkg/Include/Pi/PrePiDxeCis.h > > create mode 100644 MdeModulePkg/Include/Pi/PrePiHob.h > > create mode 100644 MdePkg/Include/Protocol/MemoryAccept.h > > > > -- > > 2.29.2.windows.2 > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#95816): https://edk2.groups.io/g/devel/message/95816 Mute This Topic: https://groups.io/mt/94703252/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-