Hi It is good idea to have a protocol to abstract TDX and SEV. I think we need clearly document what service can be used in EFI_ACCEPT_MEMORY. For example, can we use memory allocation service, GCD service, or MP service? In https://github.com/mxu9/edk2/pull/9/commits, I do not find the producer of EFI_ACCEPT_MEMORY, would you please give me some hint?
Couple of dependency issue: If EFI_ACCEPT_MEMORY cannot use MP service, then there might be performance concern. If it uses MP service, then we need ensure MP service is installed earlier and before memory accept request. I think we need a way to ensure there is enough memory *before* the protocol is installed, right? Also, would you please clarify how to fix below comment? // // Fix me! CoreAddMemorySpace() should not be called in the allocation process // because it will allocate memory for GCD map entry. // Thank you Yao Jiewen > -----Original Message----- > From: Gao, Jiaqi <jiaqi....@intel.com> > Sent: Wednesday, September 1, 2021 3:23 PM > To: devel@edk2.groups.io; kra...@redhat.com > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Bi, Dandan <dandan...@intel.com>; gaolim...@byosoft.com.cn; Ni, Ray > <ray...@intel.com>; Kinney, Michael D <michael.d.kin...@intel.com>; Yao, > Jiewen <jiewen....@intel.com>; Zimmer, Vincent <vincent.zim...@intel.com>; > Justen, Jordan L <jordan.l.jus...@intel.com>; Xu, Min M <min.m...@intel.com> > Subject: RE: [edk2-devel] [RFC] Design review for Lazy Page Accept in TDVF > > > On Tuesday, August 31, 2021 2:11 PM, Gerd Hoffmann wrote: > > > Motivation: Intel TDX provides memory encryption and integrity > > > multi-tenancy for hardware protection. A TD-guest uses TDCALL to > > > accept shared memory as private. However, accept whole system memory > > > may take a long time which will have an adverse impact on the boot > > > time performance. > > > > Which order of magnitude do we talk about? > > How long would it take to accept 2G of memory (all memory below 4g on > > qemu q35) ? > > Here is some data using different guest configurations, it will take less > time with > more cpu cores. > For 2048MB memory it takes about 4 ~ 1.5 seconds using 1 ~ 4 cores guest to > accept all. > For 4096MB memory it takes about 8 ~ 3 seconds using 1 ~ 4 cores guest. > > > > We propose three options to address this issue: > > > > > 1. Modifying the memory allocation (MdeModulePkg/Core/Dxe/Mem) > > logic to accept memory when OUT_OF_RESOURCE occurs. > > > 2. Changing the process flow of QEMU direct boot and GRUB to accept > > memory when loading the image fails and returns OUT_OF_RESOURCE. > > > 3. Adding AcceptMemory() as a boot service interface to simplify the > > implementation of option 2. > > > Underlying implementation of accepting memory is provided by a protocol > > which can be installed by architecture-specific drivers such as TdxDxe. > > > > (1) Looks best to me. From a design point of view it is a very reasonable > > thing for the core memory manager to also manage the > > accepted/unaccepted state of memory. It avoids duplicating the "oom -> try > > AcceptMemoryRessource()" logic in bootloaders and will also cover other > > oom situations. > > > > take care, > > Gerd > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#80184): https://edk2.groups.io/g/devel/message/80184 Mute This Topic: https://groups.io/mt/85267822/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-