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 (#39329): https://edk2.groups.io/g/devel/message/39329
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