On 01/09/14 01:44, Jordan Justen wrote: > Note: The Temporary RAM memory size is being reduced from > 64KB to 32KB. This still appears to be more than > adequate for OVMF's early PEI phase. We will be adding > another 32KB range of RAM just above this range for > use on S3 resume. > > The range is declared as part of MEMFD, so it is easier > to identify the memory range. > > We also now assign PCDs to the memory range.
I understand now how you can eliminate EmuNvramLib -- by introducing PCDs. It seems like a good approach. > > The PCDs are used to set the initial SEC/PEI stack in > SEC's assembly code. > > The PCDs are also used in the SEC C code to setup > the Temporary RAM PPI. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Jordan Justen <[email protected]> > --- > OvmfPkg/OvmfPkg.dec | 2 ++ > OvmfPkg/OvmfPkgIa32.fdf | 3 +++ > OvmfPkg/OvmfPkgIa32X64.fdf | 3 +++ > OvmfPkg/OvmfPkgX64.fdf | 3 +++ > OvmfPkg/Sec/Ia32/SecEntry.S | 14 +++++++++----- > OvmfPkg/Sec/Ia32/SecEntry.asm | 14 +++++++++----- > OvmfPkg/Sec/SecMain.c | 6 +++++- > OvmfPkg/Sec/SecMain.inf | 2 ++ > OvmfPkg/Sec/X64/SecEntry.S | 6 ++++-- > OvmfPkg/Sec/X64/SecEntry.asm | 9 +++++---- > 10 files changed, 45 insertions(+), 17 deletions(-) > > diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec > index c362e5f..0e33b3b 100644 > --- a/OvmfPkg/OvmfPkg.dec > +++ b/OvmfPkg/OvmfPkg.dec > @@ -80,6 +80,8 @@ > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress|0x0|UINT32|0xf > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|0x0|UINT32|0x11 > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize|0x0|UINT32|0x12 > + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|0x0|UINT32|0x13 > + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize|0x0|UINT32|0x14 > > [PcdsDynamic, PcdsDynamicEx] > gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 > diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf > index 483ad85..210abde 100644 > --- a/OvmfPkg/OvmfPkgIa32.fdf > +++ b/OvmfPkg/OvmfPkgIa32.fdf > @@ -138,6 +138,9 @@ NumBlocks = 0x80 > 0x000000|0x006000 > > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize > > +0x010000|0x008000 > +gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize > + > 0x020000|0x7E0000 > > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize > FV = MAINFV > diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf > index 9a00080..90f44a6 100644 > --- a/OvmfPkg/OvmfPkgIa32X64.fdf > +++ b/OvmfPkg/OvmfPkgIa32X64.fdf > @@ -138,6 +138,9 @@ NumBlocks = 0x80 > 0x000000|0x006000 > > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize > > +0x010000|0x008000 > +gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize > + > 0x020000|0x7E0000 > > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize > FV = MAINFV > diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf > index 09a91c1..67c7415 100644 > --- a/OvmfPkg/OvmfPkgX64.fdf > +++ b/OvmfPkg/OvmfPkgX64.fdf > @@ -138,6 +138,9 @@ NumBlocks = 0x80 > 0x000000|0x006000 > > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize > > +0x010000|0x008000 > +gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize > + > 0x020000|0x7E0000 > > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize > FV = MAINFV > diff --git a/OvmfPkg/Sec/Ia32/SecEntry.S b/OvmfPkg/Sec/Ia32/SecEntry.S > index a1b0c0d..b604a81 100644 > --- a/OvmfPkg/Sec/Ia32/SecEntry.S > +++ b/OvmfPkg/Sec/Ia32/SecEntry.S > @@ -1,7 +1,7 @@ > # TITLE SecEntry.asm > > #------------------------------------------------------------------------------ > #* > -#* Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> > +#* Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR> > #* This program and the accompanying materials > #* are licensed and made available under the terms and conditions of the > BSD License > #* which accompanies this distribution. The full text of the license may > be found at > @@ -36,15 +36,19 @@ ASM_GLOBAL ASM_PFX(_ModuleEntryPoint) > ASM_PFX(_ModuleEntryPoint): > > # > - # Load temporary stack top at very low memory. The C code > - # can reload to a better address. > + # Load temporary RAM stack based on PCDs > # > - movl $BASE_512KB, %eax > + .set SEC_TOP_OF_STACK, FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \ > + FixedPcdGet32 (PcdOvmfSecPeiTempRamSize) > + movl $SEC_TOP_OF_STACK, %eax Whoa, this is beautiful! [...] Reviewed-by: Laszlo Ersek <[email protected]> ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
