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

Reply via email to