Skip to content

Commit

Permalink
ArmPkg,ArmPlatformPkg: Allow dynamic PCDs for memory base and size
Browse files Browse the repository at this point in the history
This changes the definition and a bunch of references to
gArmTokenSpaceGuid.PcdSystemMemoryBase and
gArmTokenSpaceGuid.PcdSystemMemorySize so they can be declared as dynamic PCDs
by the platform. Also, move the non-SEC call to
ArmPlatformInitializeSystemMemory() earlier, so a platform has a chance to set
these PCDs before they are first referenced.

The purpose is allowing dynamically instantiated virtual machines to declare
the system memory by passing a device tree.

Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Laszlo Ersek <[email protected]>
Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Olivier Martin <[email protected]>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16079 6f19259b-4bc3-4df7-8a09-765794883524
  • Loading branch information
Ard Biesheuvel authored and oliviermartin committed Sep 9, 2014
1 parent 4f6d34b commit f8d7d6e
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 29 deletions.
12 changes: 6 additions & 6 deletions ArmPkg/ArmPkg.dec
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,6 @@
gArmTokenSpaceGuid.PcdHypFvBaseAddress|0|UINT32|0x0000003C
gArmTokenSpaceGuid.PcdHypFvSize|0|UINT32|0x0000003D

# System Memory (DRAM): These PCDs define the region of in-built system memory
# Some platforms can get DRAM extensions, these additional regions will be declared
# to UEFI by ArmPlatformLib
gArmTokenSpaceGuid.PcdSystemMemoryBase|0|UINT64|0x00000029
gArmTokenSpaceGuid.PcdSystemMemorySize|0|UINT64|0x0000002A

# Use ClusterId + CoreId to identify the PrimaryCore
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask|0xF03|UINT32|0x00000031
# The Primary Core is ClusterId[0] & CoreId[0]
Expand Down Expand Up @@ -214,6 +208,12 @@
# context of virtual machine.
#
[PcdsFixedAtBuild.common, PcdsDynamic.common]
# System Memory (DRAM): These PCDs define the region of in-built system memory
# Some platforms can get DRAM extensions, these additional regions will be declared
# to UEFI by ArmPlatformLib
gArmTokenSpaceGuid.PcdSystemMemoryBase|0|UINT64|0x00000029
gArmTokenSpaceGuid.PcdSystemMemorySize|0|UINT64|0x0000002A

#
# ARM Architectural Timer
#
Expand Down
3 changes: 2 additions & 1 deletion ArmPkg/Library/BdsLib/BdsLib.inf
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,11 @@
[FeaturePcd]
gArmTokenSpaceGuid.PcdArmLinuxSpinTable

[FixedPcd]
[Pcd]
gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize

[FixedPcd]
gArmTokenSpaceGuid.PcdArmMachineType
gArmTokenSpaceGuid.PcdArmLinuxFdtMaxOffset
gArmTokenSpaceGuid.PcdArmLinuxFdtAlignment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@
gArmTokenSpaceGuid.PcdFdBaseAddress
gArmTokenSpaceGuid.PcdFdSize

gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize

gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize
gArmPlatformTokenSpaceGuid.PcdPeiGlobalVariableSize

[Pcd]
gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize

12 changes: 6 additions & 6 deletions ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#/** @file
#
# Copyright (c) 2011, ARM Ltd. All rights reserved.<BR>
# Copyright (c) 2011-2014, ARM Ltd. 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
Expand Down Expand Up @@ -39,17 +39,13 @@
[Guids]
gEfiMemoryTypeInformationGuid

[Ppis]

[FeaturePcd]
gEmbeddedTokenSpaceGuid.PcdPrePiProduceMemoryTypeInformationHob

[FixedPcd]
gArmTokenSpaceGuid.PcdFdBaseAddress
gArmTokenSpaceGuid.PcdFdSize

gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize
gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize

gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory
Expand All @@ -62,5 +58,9 @@
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData

[depex]
[Pcd]
gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize

[Depex]
TRUE
16 changes: 8 additions & 8 deletions ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,14 +103,6 @@ InitializeMemory (

DEBUG ((EFI_D_ERROR, "Memory Init PEIM Loaded\n"));

// Ensure PcdSystemMemorySize has been set
ASSERT (FixedPcdGet64 (PcdSystemMemorySize) != 0);

SystemMemoryBase = (UINTN)FixedPcdGet64 (PcdSystemMemoryBase);
SystemMemoryTop = SystemMemoryBase + (UINTN)FixedPcdGet64 (PcdSystemMemorySize);
FdBase = (UINTN)PcdGet32 (PcdFdBaseAddress);
FdTop = FdBase + (UINTN)PcdGet32 (PcdFdSize);

//
// Initialize the System Memory (DRAM)
//
Expand All @@ -119,6 +111,14 @@ InitializeMemory (
ArmPlatformInitializeSystemMemory ();
}

// Ensure PcdSystemMemorySize has been set
ASSERT (PcdGet64 (PcdSystemMemorySize) != 0);

SystemMemoryBase = (UINTN)PcdGet64 (PcdSystemMemoryBase);
SystemMemoryTop = SystemMemoryBase + (UINTN)PcdGet64 (PcdSystemMemorySize);
FdBase = (UINTN)PcdGet32 (PcdFdBaseAddress);
FdTop = FdBase + (UINTN)PcdGet32 (PcdFdSize);

//
// Declare the UEFI memory to PEI
//
Expand Down
8 changes: 5 additions & 3 deletions ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#/** @file
#
# Copyright (c) 2011, ARM Ltd. All rights reserved.<BR>
# Copyright (c) 2011-2014, ARM Ltd. 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
Expand Down Expand Up @@ -55,8 +55,6 @@
gArmTokenSpaceGuid.PcdFdBaseAddress
gArmTokenSpaceGuid.PcdFdSize

gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize
gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize

gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory
Expand All @@ -69,5 +67,9 @@
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData

[Pcd]
gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize

[Depex]
TRUE
6 changes: 4 additions & 2 deletions ArmPlatformPkg/PrePi/PeiUniCore.inf
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,6 @@

gArmPlatformTokenSpaceGuid.PcdPeiGlobalVariableSize

gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize
gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize

gArmPlatformTokenSpaceGuid.PcdCoreCount
Expand All @@ -106,3 +104,7 @@
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData

[Pcd]
gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize

0 comments on commit f8d7d6e

Please sign in to comment.