summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarc Jones <marc@marcjonesconsulting.com>2018-01-12 16:52:29 +0000
committerMartin Roth <martinroth@google.com>2018-01-13 23:42:09 +0000
commita273753c729eeb2bde30ad8886649a5058430461 (patch)
treeac1433388b524d7684e79872a371a36295dc2132 /src
parentf46fca4befee792e1762709a0e94344602bb9277 (diff)
Revert "soc/amd/common/pi: Fix issue in AGESA heap allocator"
This reverts commit 0f5651584ebb8e2ccfa151275bfd2f70e74bae9b. This is not the correct fix for the heap allocator. It looks like the root cause is in the buffer size of the deallocate function. Change-Id: I33c479a30d89a665677d3e4914194ae8136504af Signed-off-by: Marc Jones <marcj303@gmail.com> Reviewed-on: https://review.coreboot.org/23245 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Chris Ching <chingcodes@chromium.org> Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h2
-rw-r--r--src/soc/amd/common/block/pi/heapmanager.c9
2 files changed, 4 insertions, 7 deletions
diff --git a/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h b/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h
index 87856003f3..2302889e6b 100644
--- a/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h
+++ b/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h
@@ -34,8 +34,6 @@ typedef struct _BIOS_BUFFER_NODE {
UINT32 NextNodeOffset;
} BIOS_BUFFER_NODE;
-#define MIN_BUFFER_NODE_SIZE (sizeof(BIOS_BUFFER_NODE) + sizeof(uint32_t))
-
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/block/pi/heapmanager.c b/src/soc/amd/common/block/pi/heapmanager.c
index d149e9144f..cea3171aa5 100644
--- a/src/soc/amd/common/block/pi/heapmanager.c
+++ b/src/soc/amd/common/block/pi/heapmanager.c
@@ -159,12 +159,11 @@ AGESA_STATUS agesa_AllocateBuffer (UINT32 Func, UINTN Data, VOID *ConfigPtr)
BestFitPrevNodeOffset);
/*
- * If BestFitNode is larger than the requested buffer and
- * has room for another buffer node, fragment the node further.
+ * If BestFitNode is larger than the requested buffer,
+ * fragment the node further
*/
- if (BestFitNodePtr->BufferSize >=
- (AllocParams->BufferLength + sizeof(BIOS_BUFFER_NODE) +
- MIN_BUFFER_NODE_SIZE)) {
+ if (BestFitNodePtr->BufferSize >
+ (AllocParams->BufferLength + sizeof(BIOS_BUFFER_NODE))) {
NextFreeOffset = BestFitNodeOffset +
AllocParams->BufferLength +
sizeof(BIOS_BUFFER_NODE);