summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Dawson <marshalldawson3rd@gmail.com>2017-09-21 12:21:14 -0600
committerAaron Durbin <adurbin@chromium.org>2017-09-27 16:27:09 +0000
commit6c747068565f32b282f13cdd3aabe6afb4c66799 (patch)
treeca2fc8235bc6fe7ba6d41535ddfadc94a1b07ff3
parented501d5b3f828d3504a6c4c44dc67ee1fbad2efb (diff)
downloadcoreboot-6c747068565f32b282f13cdd3aabe6afb4c66799.tar.xz
amd/stoneyridge: Put AGESA heap into cbmem
Now that soc/amd supports EARLY_CBMEM_INIT, put the HEAP into cbmem, allowing better control of its cacheability in subsequent patches. This relocates the heap initialization from the common directory into a romstage cbmem hook. The conversion relies on cbmem_add() first searching cbmem for the ID before adding a new entry. Change-Id: I9ff35eefb2a68879ff44c6e29f58635831b19848 Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com> Reviewed-on: https://review.coreboot.org/21594 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
-rw-r--r--src/soc/amd/common/BiosCallOuts.h2
-rw-r--r--src/soc/amd/common/agesawrapper.c2
-rw-r--r--src/soc/amd/common/heapmanager.c14
3 files changed, 7 insertions, 11 deletions
diff --git a/src/soc/amd/common/BiosCallOuts.h b/src/soc/amd/common/BiosCallOuts.h
index 9cad16df96..c6ad585c65 100644
--- a/src/soc/amd/common/BiosCallOuts.h
+++ b/src/soc/amd/common/BiosCallOuts.h
@@ -35,8 +35,6 @@ typedef struct _BIOS_BUFFER_NODE {
UINT32 NextNodeOffset;
} BIOS_BUFFER_NODE;
-void EmptyHeap(void);
-
AGESA_STATUS agesa_AllocateBuffer(UINT32 Func, UINTN Data, VOID *ConfigPtr);
AGESA_STATUS agesa_DeallocateBuffer(UINT32 Func, UINTN Data, VOID *ConfigPtr);
AGESA_STATUS agesa_LocateBuffer(UINT32 Func, UINTN Data, VOID *ConfigPtr);
diff --git a/src/soc/amd/common/agesawrapper.c b/src/soc/amd/common/agesawrapper.c
index b95d61ab6a..a269130de3 100644
--- a/src/soc/amd/common/agesawrapper.c
+++ b/src/soc/amd/common/agesawrapper.c
@@ -173,8 +173,6 @@ AGESA_STATUS agesawrapper_amdinitpost(void)
if (status != AGESA_SUCCESS) agesawrapper_amdreadeventlog(PostParams->StdHeader.HeapStatus);
AmdReleaseStruct (&AmdParamStruct);
- /* Initialize heap space */
- EmptyHeap();
return status;
}
diff --git a/src/soc/amd/common/heapmanager.c b/src/soc/amd/common/heapmanager.c
index 0accd09cd0..fdf7f65880 100644
--- a/src/soc/amd/common/heapmanager.c
+++ b/src/soc/amd/common/heapmanager.c
@@ -22,20 +22,20 @@
static void *GetHeapBase(void)
{
- void *heap = (void *)BIOS_HEAP_START_ADDRESS;
-
- if (acpi_is_wakeup_s3())
- heap = cbmem_find(CBMEM_ID_RESUME_SCRATCH);
-
- return heap;
+ return cbmem_add(CBMEM_ID_RESUME_SCRATCH, BIOS_HEAP_SIZE);
}
-void EmptyHeap(void)
+static void EmptyHeap(int unused)
{
void *BiosManagerPtr = GetHeapBase();
memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);
}
+#if IS_ENABLED(CONFIG_LATE_CBMEM_INIT)
+#error "Only EARLY_CBMEM_INIT is supported."
+#endif
+ROMSTAGE_CBMEM_INIT_HOOK(EmptyHeap)
+
AGESA_STATUS agesa_AllocateBuffer (UINT32 Func, UINTN Data, VOID *ConfigPtr)
{
UINT32 AvailableHeapSize;