diff options
author | Marc Jones <marc@marcjonesconsulting.com> | 2018-01-12 16:52:29 +0000 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2018-01-13 23:42:09 +0000 |
commit | a273753c729eeb2bde30ad8886649a5058430461 (patch) | |
tree | ac1433388b524d7684e79872a371a36295dc2132 /src | |
parent | f46fca4befee792e1762709a0e94344602bb9277 (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.h | 2 | ||||
-rw-r--r-- | src/soc/amd/common/block/pi/heapmanager.c | 9 |
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); |