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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to