blob: 824c6ccb8769aa1258e754145f0b7db30c62666a [file] [log] [blame]
From 44b69c8d7c8ed665b4f8d8a9953ea23a731d221f Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: Fri, 10 Mar 2023 18:46:49 +0000
Subject: [PATCH] Revert "ArmVirtPkg/QemuVirtMemInfoLib: use HOB not PCD to
record the memory size"
This reverts commit 7136d5491e225c57f1d73e4a1b7ac27ed656ff72.
Upstream-Status: Inappropriate [other]
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
ArmVirtPkg/ArmVirtPkg.dec | 1 -
ArmVirtPkg/ArmVirtQemu.dsc | 6 ++--
.../ArmVirtMemoryInitPeiLib.c | 14 ++------
.../ArmVirtMemoryInitPeiLib.inf | 1 -
.../QemuVirtMemInfoLib/QemuVirtMemInfoLib.c | 35 ++-----------------
.../QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf | 5 +--
.../QemuVirtMemInfoPeiLib.inf | 8 ++---
.../QemuVirtMemInfoPeiLibConstructor.c | 30 +++++++---------
8 files changed, 25 insertions(+), 75 deletions(-)
diff --git a/ArmVirtPkg/ArmVirtPkg.dec b/ArmVirtPkg/ArmVirtPkg.dec
index 4645c91a83..d2d325d71e 100644
--- a/ArmVirtPkg/ArmVirtPkg.dec
+++ b/ArmVirtPkg/ArmVirtPkg.dec
@@ -32,7 +32,6 @@
gArmVirtTokenSpaceGuid = { 0x0B6F5CA7, 0x4F53, 0x445A, { 0xB7, 0x6E, 0x2E, 0x36, 0x5B, 0x80, 0x63, 0x66 } }
gEarlyPL011BaseAddressGuid = { 0xB199DEA9, 0xFD5C, 0x4A84, { 0x80, 0x82, 0x2F, 0x41, 0x70, 0x78, 0x03, 0x05 } }
gEarly16550UartBaseAddressGuid = { 0xea67ca3e, 0x1f54, 0x436b, { 0x97, 0x88, 0xd4, 0xeb, 0x29, 0xc3, 0x42, 0x67 } }
- gArmVirtSystemMemorySizeGuid = { 0x504eccb9, 0x1bf0, 0x4420, { 0x86, 0x5d, 0xdc, 0x66, 0x06, 0xd4, 0x13, 0xbf } }
[PcdsFeatureFlag]
#
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index 72a0cacab4..2e786dad12 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -226,9 +226,6 @@
# Shadowing PEI modules is absolutely pointless when the NOR flash is emulated
gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnBoot|FALSE
- # System Memory Size -- 128 MB initially, actual size will be fetched from DT
- gArmTokenSpaceGuid.PcdSystemMemorySize|0x8000000
-
[PcdsFixedAtBuild.AARCH64]
# Clearing BIT0 in this PCD prevents installing a 32-bit SMBIOS entry point,
# if the entry point version is >= 3.0. AARCH64 OSes cannot assume the
@@ -245,6 +242,9 @@
# enumeration to complete before installing ACPI tables.
gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|TRUE
+ # System Memory Size -- 1 MB initially, actual size will be fetched from DT
+ gArmTokenSpaceGuid.PcdSystemMemorySize|0x00100000
+
gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum|0x0
gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x0
gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x0
diff --git a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
index 72e5c65af7..98d90ad420 100644
--- a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
+++ b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c
@@ -52,19 +52,10 @@ MemoryPeim (
{
EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttributes;
UINT64 SystemMemoryTop;
- UINT64 SystemMemorySize;
- VOID *Hob;
// Ensure PcdSystemMemorySize has been set
ASSERT (PcdGet64 (PcdSystemMemorySize) != 0);
- SystemMemorySize = PcdGet64 (PcdSystemMemorySize);
-
- Hob = GetFirstGuidHob (&gArmVirtSystemMemorySizeGuid);
- if (Hob != NULL) {
- SystemMemorySize = *(UINT64 *)GET_GUID_HOB_DATA (Hob);
- }
-
//
// Now, the permanent memory has been installed, we can call AllocatePages()
//
@@ -75,7 +66,8 @@ MemoryPeim (
EFI_RESOURCE_ATTRIBUTE_TESTED
);
- SystemMemoryTop = PcdGet64 (PcdSystemMemoryBase) + SystemMemorySize;
+ SystemMemoryTop = PcdGet64 (PcdSystemMemoryBase) +
+ PcdGet64 (PcdSystemMemorySize);
if (SystemMemoryTop - 1 > MAX_ALLOC_ADDRESS) {
BuildResourceDescriptorHob (
@@ -95,7 +87,7 @@ MemoryPeim (
EFI_RESOURCE_SYSTEM_MEMORY,
ResourceAttributes,
PcdGet64 (PcdSystemMemoryBase),
- SystemMemorySize
+ PcdGet64 (PcdSystemMemorySize)
);
}
diff --git a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf
index 48d9c66b22..21327f79f4 100644
--- a/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf
+++ b/ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf
@@ -34,7 +34,6 @@
CacheMaintenanceLib
[Guids]
- gArmVirtSystemMemorySizeGuid
gEfiMemoryTypeInformationGuid
[FeaturePcd]
diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c
index 9cf43f06c0..cf569bed99 100644
--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c
+++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c
@@ -6,12 +6,10 @@
**/
-#include <Uefi.h>
-#include <Pi/PiMultiPhase.h>
+#include <Base.h>
#include <Library/ArmLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
-#include <Library/HobLib.h>
#include <Library/MemoryAllocationLib.h>
// Number of Virtual Memory Map Descriptors
@@ -26,28 +24,6 @@
#define MACH_VIRT_PERIPH_BASE 0x08000000
#define MACH_VIRT_PERIPH_SIZE SIZE_128MB
-/**
- Default library constructur that obtains the memory size from a PCD.
-
- @return Always returns RETURN_SUCCESS
-
-**/
-RETURN_STATUS
-EFIAPI
-QemuVirtMemInfoLibConstructor (
- VOID
- )
-{
- UINT64 Size;
- VOID *Hob;
-
- Size = PcdGet64 (PcdSystemMemorySize);
- Hob = BuildGuidDataHob (&gArmVirtSystemMemorySizeGuid, &Size, sizeof Size);
- ASSERT (Hob != NULL);
-
- return RETURN_SUCCESS;
-}
-
/**
Return the Virtual Memory Map of your platform
@@ -67,16 +43,9 @@ ArmVirtGetMemoryMap (
)
{
ARM_MEMORY_REGION_DESCRIPTOR *VirtualMemoryTable;
- VOID *MemorySizeHob;
ASSERT (VirtualMemoryMap != NULL);
- MemorySizeHob = GetFirstGuidHob (&gArmVirtSystemMemorySizeGuid);
- ASSERT (MemorySizeHob != NULL);
- if (MemorySizeHob == NULL) {
- return;
- }
-
VirtualMemoryTable = AllocatePool (
sizeof (ARM_MEMORY_REGION_DESCRIPTOR) *
MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS
@@ -90,7 +59,7 @@ ArmVirtGetMemoryMap (
// System DRAM
VirtualMemoryTable[0].PhysicalBase = PcdGet64 (PcdSystemMemoryBase);
VirtualMemoryTable[0].VirtualBase = VirtualMemoryTable[0].PhysicalBase;
- VirtualMemoryTable[0].Length = *(UINT64 *)GET_GUID_HOB_DATA (MemorySizeHob);
+ VirtualMemoryTable[0].Length = PcdGet64 (PcdSystemMemorySize);
VirtualMemoryTable[0].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;
DEBUG ((
diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf
index 6acad8bbd7..7150de6c10 100644
--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf
+++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf
@@ -14,7 +14,6 @@
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = ArmVirtMemInfoLib
- CONSTRUCTOR = QemuVirtMemInfoLibConstructor
[Sources]
QemuVirtMemInfoLib.c
@@ -31,9 +30,7 @@
BaseMemoryLib
DebugLib
MemoryAllocationLib
-
-[Guids]
- gArmVirtSystemMemorySizeGuid
+ PcdLib
[Pcd]
gArmTokenSpaceGuid.PcdFvBaseAddress
diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf
index f045e39a41..7ecf6dfbb7 100644
--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf
+++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf
@@ -32,16 +32,16 @@
BaseMemoryLib
DebugLib
FdtLib
+ PcdLib
MemoryAllocationLib
-[Guids]
- gArmVirtSystemMemorySizeGuid
-
-[FixedPcd]
+[Pcd]
gArmTokenSpaceGuid.PcdFdBaseAddress
gArmTokenSpaceGuid.PcdFvBaseAddress
gArmTokenSpaceGuid.PcdSystemMemoryBase
gArmTokenSpaceGuid.PcdSystemMemorySize
+
+[FixedPcd]
gArmTokenSpaceGuid.PcdFdSize
gArmTokenSpaceGuid.PcdFvSize
gArmVirtTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress
diff --git a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c
index c47ab82966..33d3597d57 100644
--- a/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c
+++ b/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c
@@ -6,10 +6,9 @@
**/
-#include <Uefi.h>
-#include <Pi/PiMultiPhase.h>
+#include <Base.h>
#include <Library/DebugLib.h>
-#include <Library/HobLib.h>
+#include <Library/PcdLib.h>
#include <libfdt.h>
RETURN_STATUS
@@ -18,14 +17,14 @@ QemuVirtMemInfoPeiLibConstructor (
VOID
)
{
- VOID *DeviceTreeBase;
- INT32 Node, Prev;
- UINT64 NewBase, CurBase;
- UINT64 NewSize, CurSize;
- CONST CHAR8 *Type;
- INT32 Len;
- CONST UINT64 *RegProp;
- VOID *Hob;
+ VOID *DeviceTreeBase;
+ INT32 Node, Prev;
+ UINT64 NewBase, CurBase;
+ UINT64 NewSize, CurSize;
+ CONST CHAR8 *Type;
+ INT32 Len;
+ CONST UINT64 *RegProp;
+ RETURN_STATUS PcdStatus;
NewBase = 0;
NewSize = 0;
@@ -87,13 +86,8 @@ QemuVirtMemInfoPeiLibConstructor (
// Make sure the start of DRAM matches our expectation
//
ASSERT (FixedPcdGet64 (PcdSystemMemoryBase) == NewBase);
-
- Hob = BuildGuidDataHob (
- &gArmVirtSystemMemorySizeGuid,
- &NewSize,
- sizeof NewSize
- );
- ASSERT (Hob != NULL);
+ PcdStatus = PcdSet64S (PcdSystemMemorySize, NewSize);
+ ASSERT_RETURN_ERROR (PcdStatus);
//
// We need to make sure that the machine we are running on has at least