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. > > > -----Original Message----- > > From: devel@edk2.groups.io > > [mailto:devel@edk2.groups.io] On Behalf Of Ard > > Biesheuvel > > Sent: Friday, April 19, 2019 7:13 AM > > To: devel@edk2.groups.io > > Cc: ming.hu...@linaro.org; Wu, Hao A > > <hao.a...@intel.com>; Wang, Jian J > > <jian.j.w...@intel.com>; Ard Biesheuvel > > <ard.biesheu...@linaro.org> > > Subject: [edk2-devel] [PATCH resend] > > MdeModulePkg/EsrtDxe: allocate ESRT table from > > RtServicesData memory > > > > Given that the firmware itself may access the ESRT > > table when the OS > > invokes the UpdateCapsule () boot service, it requires > > a virtual mapping > > and so it needs to be allocated from RtServicesData > > memory. > > > > Signed-off-by: Ard Biesheuvel > > <ard.biesheu...@linaro.org> > > --- > > MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c > > b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c > > index a386a9770583..1741cbe8f2b5 100644 > > --- a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c > > +++ b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c > > @@ -571,7 +571,8 @@ EsrtReadyToBootEventNotify ( > > goto EXIT; > > } > > > > - EsrtTable = > > AllocatePool(sizeof(EFI_SYSTEM_RESOURCE_TABLE) + > > NonFmpRepositorySize + FmpRepositorySize); > > + EsrtTable = AllocateRuntimePool > > (sizeof(EFI_SYSTEM_RESOURCE_TABLE) + > > + > > NonFmpRepositorySize + FmpRepositorySize); > > if (EsrtTable == NULL) { > > DEBUG ((EFI_D_ERROR, "Esrt table memory allocation > > failure\n")); > > goto EXIT; > > -- > > 2.20.1 > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#39328): https://edk2.groups.io/g/devel/message/39328 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] -=-=-=-=-=-=-=-=-=-=-=-