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>
This commit is contained in:
Marc Jones 2018-01-12 16:52:29 +00:00 committed by Martin Roth
parent f46fca4bef
commit a273753c72
2 changed files with 4 additions and 7 deletions

View File

@ -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);

View File

@ -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);