On 19 February 2016 at 09:45, Yao, Jiewen <jiewen....@intel.com> wrote:
> I can explain the reason on allocating <4G. It is because this data will be 
> used in PEI phase in S3 resume.
>
> On most X86 platform, PEI phase is 32bit, and DXE phase is 32bit or 64bit. So 
> we have to limit the allocation <4G.
>

OK, got it.

> Using ACPI version PCD looks strange here. Maybe another PCD, like 
> PcdDxeIplSwitchToLongMode?
>

But that does not tell us if we are running a 32-bit PEI, right? It
only tells us if a 32-bit PEI should load a 32-bit DXE core on a
64-bit capable machine.


> -----Original Message-----
> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
> Sent: Friday, February 19, 2016 4:03 AM
> To: edk2-devel@lists.01.org; Tian, Feng; Zeng, Star; 
> leif.lindh...@linaro.org; graeme.greg...@linaro.org; ler...@redhat.com; Fan, 
> Jeff; Yao, Jiewen
> Cc: mark.rutl...@arm.com; Gao, Liming; samer.el-haj-mahm...@hpe.com; Ard 
> Biesheuvel
> Subject: [PATCH v2 2/3] IntelFrameworkModulePkg: BdsDxe: only allocate below 
> 4 GB on ACPI 1.0
>
> It is not entirely clear from the code why, but the reserved region for 
> storing performance data is allocated below 4 GB, and the variable to hold 
> the address of the allocation is called 'AcpiLowMemoryBase'
> (which is the only mention of ACPI in the entire file).
>
> Let's make this allocation dependent on PcdAcpiExposedTableVersions as well, 
> since systems that can deal with ACPI table in high memory are also just as 
> likely to be able to deal with performance data in high memory. This prevents 
> memory fragmentation on systems that don't care about the 4 GB limit.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf |  1 +  
> IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c | 11 ++++++++++-
>  2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf 
> b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
> index 6afb8a09df9c..38172780fb49 100644
> --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
> +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
> @@ -215,6 +215,7 @@ [Pcd]
>    gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution           
>  ## CONSUMES
>    gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution             
>  ## CONSUMES
>    gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable                     
>  ## CONSUMES
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions                 
>  ## CONSUMES
>
>  [Depex]
>    TRUE
> diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c 
> b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c
> index ae7ad2153c51..bf5bd6524a90 100644
> --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c
> +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c
> @@ -22,6 +22,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER 
> EXPRESS OR IMPLIED.
>  #include "Hotkey.h"
>  #include "HwErrRecSupport.h"
>
> +#include <Protocol/AcpiSystemDescriptionTable.h>
> +
>  ///
>  /// BDS arch protocol instance initial value.
>  ///
> @@ -474,14 +476,21 @@ BdsAllocateMemoryForPerformanceData (
>    EFI_STATUS                    Status;
>    EFI_PHYSICAL_ADDRESS          AcpiLowMemoryBase;
>    EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock;
> +  EFI_ALLOCATE_TYPE             AcpiTableAllocType;
>
>    AcpiLowMemoryBase = 0x0FFFFFFFFULL;
>
> +  if ((PcdGet32 (PcdAcpiExposedTableVersions) & EFI_ACPI_TABLE_VERSION_1_0B) 
> != 0) {
> +    AcpiTableAllocType = AllocateMaxAddress;  } else {
> +    AcpiTableAllocType = AllocateAnyPages;  }
> +
>    //
>    // Allocate a block of memory that will contain performance data to OS.
>    //
>    Status = gBS->AllocatePages (
> -                  AllocateMaxAddress,
> +                  AcpiTableAllocType,
>                    EfiReservedMemoryType,
>                    EFI_SIZE_TO_PAGES (PERF_DATA_MAX_LENGTH),
>                    &AcpiLowMemoryBase
> --
> 2.5.0
>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to