Ard, Where is the use of ESRT at runtime?
The SetVa conversion of the ESRT table may be an old artifact that we should consider removing. Thanks, Mike > -----Original Message----- > From: devel@edk2.groups.io > [mailto:devel@edk2.groups.io] On Behalf Of Ard > Biesheuvel > Sent: Friday, April 19, 2019 10:54 AM > To: edk2-devel-groups-io <devel@edk2.groups.io>; > Kinney, Michael D <michael.d.kin...@intel.com> > Cc: ming.hu...@linaro.org; Wu, Hao A > <hao.a...@intel.com>; Wang, Jian J > <jian.j.w...@intel.com> > Subject: Re: [edk2-devel] [PATCH resend] > MdeModulePkg/EsrtDxe: allocate ESRT table from > RtServicesData memory > > On Fri, 19 Apr 2019 at 19:42, Ard Biesheuvel > <ard.biesheu...@linaro.org> wrote: > > > > On Fri, 19 Apr 2019 at 19:36, Michael D Kinney > > <michael.d.kin...@intel.com> wrote: > > > > > > Hi Ard, > > > > > > The UEFI Specification Section 23.3 says: > > > > > > "The ESRT shall be stored in memory of type > EfiBootServicesData." > > > > > > If an RT driver needs ESRT info after > ExitBootServices(), then the > > > RT driver should collect that information before > ExitBootServices(). > > > > > > > But that means that before EBS(), we will have to > make a copy of the > > ESRT into runtime services data, and we will end up > using twice as > > much memory - one copy in boot services data for the > OS, and one copy > > in runtime services data for the firmware itself. I > understand the > > reasoning behind preferring boot over runtime, so > that the OS is not > > burdened with it if it does not care. But it this > case, the RT > > services data will be allocated regardless, and so we > end up using > > less memory if we expose that same copy to the OS. > > > > Actually, DxeCapsuleLibVirtualAddressChangeEvent() in > DxeCapsuleLibFmp > updates the ESRT pointer to virtual, so this code is > clearly based on > the assumption that the ESRT resides in memory that is > covered by a > runtime VA mapping. > > Could we instead clarify the UEFI spec to something > like > > "The ESRT shall be stored in memory of type > EfiBootServicesData unless > the runtime services implementations themselves need to > access it at > OS runtime, in which case it may be stored in > EfiRuntimeServicesData." > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#39330): https://edk2.groups.io/g/devel/message/39330 Mute This Topic: https://groups.io/mt/31245843/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-