diff options
author | Marshall Dawson <marshalldawson3rd@gmail.com> | 2017-09-21 12:21:14 -0600 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2017-09-27 16:27:09 +0000 |
commit | 6c747068565f32b282f13cdd3aabe6afb4c66799 (patch) | |
tree | ca2fc8235bc6fe7ba6d41535ddfadc94a1b07ff3 /src | |
parent | ed501d5b3f828d3504a6c4c44dc67ee1fbad2efb (diff) | |
download | coreboot-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/soc/amd/common/BiosCallOuts.h | 2 | ||||
-rw-r--r-- | src/soc/amd/common/agesawrapper.c | 2 | ||||
-rw-r--r-- | src/soc/amd/common/heapmanager.c | 14 |
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; |