<p>Richard Spiegel has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/25703">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">soc/amd/common/block/pi/heapmanager.c: Simplify code<br><br>There are sections of code that are almost identical and they can be<br>converted to auxiliary procedures. For allocating heap, 3 sizes are used<br>often so they could be stored in temporary variables. These 2 changes<br>will make code shorter, with less indentation problems and overall easier<br>to read. The actual logic of the code is not changed.<br><br>BUG=b:77940747<br>TEST=Build and boot grunt.<br><br>Change-Id: Ib4c69981eab7452228ccae9ed9bc288c8baceffe<br>Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com><br>---<br>M src/soc/amd/common/block/pi/heapmanager.c<br>1 file changed, 79 insertions(+), 86 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/03/25703/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/soc/amd/common/block/pi/heapmanager.c b/src/soc/amd/common/block/pi/heapmanager.c</span><br><span>index a469a45..aa3a40d 100644</span><br><span>--- a/src/soc/amd/common/block/pi/heapmanager.c</span><br><span>+++ b/src/soc/amd/common/block/pi/heapmanager.c</span><br><span>@@ -30,6 +30,44 @@</span><br><span>   memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static AGESA_STATUS FindNode(uint32_t handle, BIOS_BUFFER_NODE **pointer)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     UINT32              AllocNodeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+  UINT8               *BiosHeapBaseAddr;</span><br><span style="color: hsl(120, 100%, 40%);">+        BIOS_BUFFER_NODE    *AllocNodePtr;</span><br><span style="color: hsl(120, 100%, 40%);">+    BIOS_HEAP_MANAGER   *BiosHeapBasePtr;</span><br><span style="color: hsl(120, 100%, 40%);">+ AGESA_STATUS        Status = AGESA_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ BiosHeapBaseAddr = agesa_heap_base();</span><br><span style="color: hsl(120, 100%, 40%);">+ BiosHeapBasePtr = (BIOS_HEAP_MANAGER *)BiosHeapBaseAddr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;</span><br><span style="color: hsl(120, 100%, 40%);">+  AllocNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr + AllocNodeOffset);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    while (handle != AllocNodePtr->BufferHandle) {</span><br><span style="color: hsl(120, 100%, 40%);">+             if (AllocNodePtr->NextNodeOffset == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   Status = AGESA_BOUNDS_CHK;</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             AllocNodeOffset = AllocNodePtr->NextNodeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+            AllocNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr +</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    AllocNodeOffset);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     *pointer = AllocNodePtr;</span><br><span style="color: hsl(120, 100%, 40%);">+      return Status;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void ConcatenateNodes(BIOS_BUFFER_NODE *FirstNodePtr,</span><br><span style="color: hsl(120, 100%, 40%);">+                             BIOS_BUFFER_NODE *SecondNodePtr)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   FirstNodePtr->BufferSize += SecondNodePtr->BufferSize +</span><br><span style="color: hsl(120, 100%, 40%);">+                                         sizeof(BIOS_BUFFER_NODE);</span><br><span style="color: hsl(120, 100%, 40%);">+     FirstNodePtr->NextNodeOffset = SecondNodePtr->NextNodeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Zero out the SecondNode header */</span><br><span style="color: hsl(120, 100%, 40%);">+  memset((UINT8 *)SecondNodePtr, 0, sizeof(BIOS_BUFFER_NODE));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #if IS_ENABLED(CONFIG_LATE_CBMEM_INIT)</span><br><span> #error "Only EARLY_CBMEM_INIT is supported."</span><br><span> #endif</span><br><span>@@ -42,9 +80,12 @@</span><br><span>         UINT32              CurrNodeOffset;</span><br><span>  UINT32              PrevNodeOffset;</span><br><span>  UINT32              FreedNodeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+  UINT32              FreedNodeSize;</span><br><span>   UINT32              BestFitNodeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+        UINT32              BestFitNodeSize;</span><br><span>         UINT32              BestFitPrevNodeOffset;</span><br><span>   UINT32              NextFreeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+   UINT32              MinimumSize;</span><br><span>     BIOS_BUFFER_NODE   *CurrNodePtr;</span><br><span>     BIOS_BUFFER_NODE   *FreedNodePtr;</span><br><span>    BIOS_BUFFER_NODE   *BestFitNodePtr;</span><br><span>@@ -52,11 +93,14 @@</span><br><span>    BIOS_BUFFER_NODE   *NextFreePtr;</span><br><span>     BIOS_HEAP_MANAGER  *BiosHeapBasePtr;</span><br><span>         AGESA_BUFFER_PARAMS *AllocParams;</span><br><span style="color: hsl(120, 100%, 40%);">+     AGESA_STATUS        Status;</span><br><span> </span><br><span>      AllocParams = ((AGESA_BUFFER_PARAMS *)ConfigPtr);</span><br><span>    AllocParams->BufferPointer = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ MinimumSize = AllocParams->BufferLength + sizeof(BIOS_BUFFER_NODE);</span><br><span> </span><br><span>   AvailableHeapSize = BIOS_HEAP_SIZE - sizeof(BIOS_HEAP_MANAGER);</span><br><span style="color: hsl(120, 100%, 40%);">+       BestFitNodeSize = AvailableHeapSize; /* init with largest possible */</span><br><span>        BiosHeapBaseAddr = agesa_heap_base();</span><br><span>        BiosHeapBasePtr = (BIOS_HEAP_MANAGER *)BiosHeapBaseAddr;</span><br><span> </span><br><span>@@ -85,37 +129,29 @@</span><br><span>          BiosHeapBasePtr->StartOfAllocatedNodes = CurrNodeOffset;</span><br><span>          BiosHeapBasePtr->StartOfFreedNodes = FreedNodeOffset;</span><br><span>     } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                /* Find out whether BufferHandle has been allocated on the heap.</span><br><span style="color: hsl(120, 100%, 40%);">+              /*</span><br><span style="color: hsl(120, 100%, 40%);">+             * Find out whether BufferHandle has been allocated on the heap.</span><br><span>              * If it has, return AGESA_BOUNDS_CHK.</span><br><span>                */</span><br><span style="color: hsl(0, 100%, 40%);">-             CurrNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;</span><br><span style="color: hsl(0, 100%, 40%);">-             CurrNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr</span><br><span style="color: hsl(0, 100%, 40%);">-                                             + CurrNodeOffset);</span><br><span style="color: hsl(120, 100%, 40%);">+            Status = FindNode(AllocParams->BufferHandle, &CurrNodePtr);</span><br><span style="color: hsl(120, 100%, 40%);">+            if (Status == AGESA_SUCCESS)</span><br><span style="color: hsl(120, 100%, 40%);">+                  return AGESA_BOUNDS_CHK;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            while (CurrNodeOffset != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   CurrNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr</span><br><span style="color: hsl(0, 100%, 40%);">-                                             + CurrNodeOffset);</span><br><span style="color: hsl(0, 100%, 40%);">-                      if (CurrNodePtr->BufferHandle ==</span><br><span style="color: hsl(0, 100%, 40%);">-                                             AllocParams->BufferHandle) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         return AGESA_BOUNDS_CHK;</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(0, 100%, 40%);">-                       CurrNodeOffset = CurrNodePtr->NextNodeOffset;</span><br><span style="color: hsl(0, 100%, 40%);">-                        /* If BufferHandle has not been allocated on the heap,</span><br><span style="color: hsl(0, 100%, 40%);">-                   * CurrNodePtr here points to the end of the allocated</span><br><span style="color: hsl(0, 100%, 40%);">-                   * nodes list.</span><br><span style="color: hsl(0, 100%, 40%);">-                   */</span><br><span style="color: hsl(0, 100%, 40%);">-             }</span><br><span style="color: hsl(120, 100%, 40%);">+             /*</span><br><span style="color: hsl(120, 100%, 40%);">+             * If status ditn't returned AGESA_SUCCESS, CurrNodePtr here</span><br><span style="color: hsl(120, 100%, 40%);">+               * points to the end of the allocated nodes list.</span><br><span style="color: hsl(120, 100%, 40%);">+              */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>                /* Find the node that best fits the requested buffer size */</span><br><span>                 FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;</span><br><span>             PrevNodeOffset = FreedNodeOffset;</span><br><span>            BestFitNodeOffset = 0;</span><br><span>               BestFitPrevNodeOffset = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-              while (FreedNodeOffset != 0) { /* todo: simplify this */</span><br><span style="color: hsl(120, 100%, 40%);">+              while (FreedNodeOffset != 0) {</span><br><span>                       FreedNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr</span><br><span>                                                 + FreedNodeOffset);</span><br><span style="color: hsl(0, 100%, 40%);">-                     if (FreedNodePtr->BufferSize >=</span><br><span style="color: hsl(0, 100%, 40%);">-                                           (AllocParams->BufferLength +</span><br><span style="color: hsl(0, 100%, 40%);">-                                         sizeof(BIOS_BUFFER_NODE))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  FreedNodeSize = FreedNodePtr->BufferSize;</span><br><span style="color: hsl(120, 100%, 40%);">+                  if (FreedNodeSize >= MinimumSize) {</span><br><span>                               if (BestFitNodeOffset == 0) {</span><br><span>                                        /*</span><br><span>                                    * First node that fits the requested</span><br><span>@@ -123,21 +159,19 @@</span><br><span>                                         */</span><br><span>                                  BestFitNodeOffset = FreedNodeOffset;</span><br><span>                                         BestFitPrevNodeOffset = PrevNodeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+                                       BestFitNodeSize = FreedNodeSize;</span><br><span>                             } else {</span><br><span>                                     /*</span><br><span>                                    * Find out whether current node is a</span><br><span>                                         * betterfit than the previous nodes</span><br><span>                                          */</span><br><span style="color: hsl(0, 100%, 40%);">-                                     BestFitNodePtr = (BIOS_BUFFER_NODE *)</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    (BiosHeapBaseAddr +</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      BestFitNodeOffset);</span><br><span style="color: hsl(0, 100%, 40%);">-                                   if (BestFitNodePtr->BufferSize ></span><br><span style="color: hsl(0, 100%, 40%);">-                                          FreedNodePtr->BufferSize) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                        if (BestFitNodeSize > FreedNodeSize) {</span><br><span> </span><br><span>                                                BestFitNodeOffset =</span><br><span>                                                  FreedNodeOffset;</span><br><span>                                             BestFitPrevNodeOffset =</span><br><span>                                                      PrevNodeOffset;</span><br><span style="color: hsl(120, 100%, 40%);">+                                               BestFitNodeSize = FreedNodeSize;</span><br><span>                                     }</span><br><span>                            }</span><br><span>                    }</span><br><span>@@ -162,22 +196,19 @@</span><br><span>             * If BestFitNode is larger than the requested buffer,</span><br><span>                * fragment the node further</span><br><span>                  */</span><br><span style="color: hsl(0, 100%, 40%);">-             if (BestFitNodePtr->BufferSize ></span><br><span style="color: hsl(0, 100%, 40%);">-              (AllocParams->BufferLength + sizeof(BIOS_BUFFER_NODE))) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        NextFreeOffset = BestFitNodeOffset +</span><br><span style="color: hsl(0, 100%, 40%);">-                                     AllocParams->BufferLength +</span><br><span style="color: hsl(0, 100%, 40%);">-                                  sizeof(BIOS_BUFFER_NODE);</span><br><span style="color: hsl(120, 100%, 40%);">+            if (BestFitNodePtr->BufferSize > MinimumSize) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 NextFreeOffset = BestFitNodeOffset + MinimumSize;</span><br><span>                    NextFreePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr +</span><br><span>                                      NextFreeOffset);</span><br><span style="color: hsl(0, 100%, 40%);">-                 NextFreePtr->BufferSize = BestFitNodePtr->BufferSize -</span><br><span style="color: hsl(0, 100%, 40%);">-                                             (AllocParams->BufferLength +</span><br><span style="color: hsl(0, 100%, 40%);">-                                                  sizeof(BIOS_BUFFER_NODE));</span><br><span style="color: hsl(120, 100%, 40%);">+                  NextFreePtr->BufferSize = BestFitNodeSize - MinimumSize;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                 /* Remove BestFitNode from list of Freed nodes */</span><br><span>                    NextFreePtr->NextNodeOffset =</span><br><span>                                     BestFitNodePtr->NextNodeOffset;</span><br><span>           } else {</span><br><span>                     /*</span><br><span style="color: hsl(0, 100%, 40%);">-                       * Otherwise, next free node is</span><br><span style="color: hsl(0, 100%, 40%);">-                  * NextNodeOffset of BestFitNode</span><br><span style="color: hsl(120, 100%, 40%);">+                       * Otherwise, next free node is NextNodeOffset of</span><br><span style="color: hsl(120, 100%, 40%);">+                      * BestFitNode. Remove it from list of Freed nodes.</span><br><span>                   */</span><br><span>                  NextFreeOffset = BestFitNodePtr->NextNodeOffset;</span><br><span>          }</span><br><span>@@ -197,7 +228,6 @@</span><br><span>              BestFitNodePtr->BufferHandle = AllocParams->BufferHandle;</span><br><span>              BestFitNodePtr->NextNodeOffset = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-              /* Remove BestFitNode from list of Freed nodes */</span><br><span>            AllocParams->BufferPointer = (UINT8 *)BestFitNodePtr +</span><br><span>                                         sizeof(BIOS_BUFFER_NODE);</span><br><span>       }</span><br><span>@@ -264,14 +294,7 @@</span><br><span>                     /* If the freed node is adjacent to the first node in</span><br><span>                         * the list, concatenate both nodes</span><br><span>                   */</span><br><span style="color: hsl(0, 100%, 40%);">-                     AllocNodePtr->BufferSize += FreedNodePtr->BufferSize +</span><br><span style="color: hsl(0, 100%, 40%);">-                                            sizeof(BIOS_BUFFER_NODE);</span><br><span style="color: hsl(0, 100%, 40%);">-                       AllocNodePtr->NextNodeOffset =</span><br><span style="color: hsl(0, 100%, 40%);">-                                               FreedNodePtr->NextNodeOffset;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                        /* Zero out the FreedNode header */</span><br><span style="color: hsl(0, 100%, 40%);">-                     memset((UINT8 *)FreedNodePtr, 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                sizeof(BIOS_BUFFER_NODE));</span><br><span style="color: hsl(120, 100%, 40%);">+                    ConcatenateNodes(AllocNodePtr, FreedNodePtr);</span><br><span>                } else {</span><br><span>                     /* Otherwise, add freed node to the start of the list</span><br><span>                         * Update NextNodeOffset and BufferSize to include the</span><br><span>@@ -302,14 +325,7 @@</span><br><span>                if (NextNodeOffset == EndNodeOffset) {</span><br><span>                       NextNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr</span><br><span>                                          + NextNodeOffset);</span><br><span style="color: hsl(0, 100%, 40%);">-                      AllocNodePtr->BufferSize += NextNodePtr->BufferSize +</span><br><span style="color: hsl(0, 100%, 40%);">-                                             sizeof(BIOS_BUFFER_NODE);</span><br><span style="color: hsl(0, 100%, 40%);">-                       AllocNodePtr->NextNodeOffset =</span><br><span style="color: hsl(0, 100%, 40%);">-                                               NextNodePtr->NextNodeOffset;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                 /* Zero out the NextNode header */</span><br><span style="color: hsl(0, 100%, 40%);">-                      memset((UINT8 *)NextNodePtr, 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                         sizeof(BIOS_BUFFER_NODE));</span><br><span style="color: hsl(120, 100%, 40%);">+                    ConcatenateNodes(AllocNodePtr, NextNodePtr);</span><br><span>                 } else {</span><br><span>                     /*AllocNodePtr->NextNodeOffset =</span><br><span>                   *                      FreedNodePtr->NextNodeOffset; */</span><br><span>@@ -324,53 +340,30 @@</span><br><span>          EndNodeOffset = PrevNodeOffset + PrevNodePtr->BufferSize +</span><br><span>                                                sizeof(BIOS_BUFFER_NODE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           if (AllocNodeOffset == EndNodeOffset) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 PrevNodePtr->NextNodeOffset =</span><br><span style="color: hsl(0, 100%, 40%);">-                                                AllocNodePtr->NextNodeOffset;</span><br><span style="color: hsl(0, 100%, 40%);">-                        PrevNodePtr->BufferSize += AllocNodePtr->BufferSize +</span><br><span style="color: hsl(0, 100%, 40%);">-                                             sizeof(BIOS_BUFFER_NODE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                       /* Zero out the AllocNode header */</span><br><span style="color: hsl(0, 100%, 40%);">-                     memset((UINT8 *)AllocNodePtr, 0,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                sizeof(BIOS_BUFFER_NODE));</span><br><span style="color: hsl(0, 100%, 40%);">-              } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (AllocNodeOffset == EndNodeOffset)</span><br><span style="color: hsl(120, 100%, 40%);">+                 ConcatenateNodes(PrevNodePtr, AllocNodePtr);</span><br><span style="color: hsl(120, 100%, 40%);">+          else</span><br><span>                         PrevNodePtr->NextNodeOffset = AllocNodeOffset;</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span>    }</span><br><span>    return AGESA_SUCCESS;</span><br><span> }</span><br><span> </span><br><span> AGESA_STATUS agesa_LocateBuffer (UINT32 Func, UINTN Data, VOID *ConfigPtr)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       UINT32              AllocNodeOffset;</span><br><span style="color: hsl(0, 100%, 40%);">-    UINT8               *BiosHeapBaseAddr;</span><br><span>       BIOS_BUFFER_NODE    *AllocNodePtr;</span><br><span style="color: hsl(0, 100%, 40%);">-      BIOS_HEAP_MANAGER   *BiosHeapBasePtr;</span><br><span>        AGESA_BUFFER_PARAMS *AllocParams;</span><br><span style="color: hsl(120, 100%, 40%);">+     AGESA_STATUS        Status;</span><br><span> </span><br><span>      AllocParams = (AGESA_BUFFER_PARAMS *)ConfigPtr;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     BiosHeapBaseAddr = agesa_heap_base();</span><br><span style="color: hsl(0, 100%, 40%);">-   BiosHeapBasePtr = (BIOS_HEAP_MANAGER *)BiosHeapBaseAddr;</span><br><span style="color: hsl(120, 100%, 40%);">+      Status = FindNode(AllocParams->BufferHandle, &AllocNodePtr);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;</span><br><span style="color: hsl(0, 100%, 40%);">-    AllocNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr + AllocNodeOffset);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        while (AllocParams->BufferHandle != AllocNodePtr->BufferHandle) {</span><br><span style="color: hsl(0, 100%, 40%);">-         if (AllocNodePtr->NextNodeOffset == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     AllocParams->BufferPointer = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-                   AllocParams->BufferLength = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                       return AGESA_BOUNDS_CHK;</span><br><span style="color: hsl(0, 100%, 40%);">-                }</span><br><span style="color: hsl(0, 100%, 40%);">-               AllocNodeOffset = AllocNodePtr->NextNodeOffset;</span><br><span style="color: hsl(0, 100%, 40%);">-              AllocNodePtr = (BIOS_BUFFER_NODE *)(BiosHeapBaseAddr +</span><br><span style="color: hsl(0, 100%, 40%);">-                                              AllocNodeOffset);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (Status == AGESA_SUCCESS) {</span><br><span style="color: hsl(120, 100%, 40%);">+                AllocParams->BufferPointer = (UINT8 *)((UINT8 *)AllocNodePtr</span><br><span style="color: hsl(120, 100%, 40%);">+                                               + sizeof(BIOS_BUFFER_NODE));</span><br><span style="color: hsl(120, 100%, 40%);">+          AllocParams->BufferLength = AllocNodePtr->BufferSize;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   AllocParams->BufferPointer = (UINT8 *)((UINT8 *)AllocNodePtr</span><br><span style="color: hsl(0, 100%, 40%);">-                                         + sizeof(BIOS_BUFFER_NODE));</span><br><span style="color: hsl(0, 100%, 40%);">-    AllocParams->BufferLength = AllocNodePtr->BufferSize;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     return AGESA_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+ return Status;</span><br><span> </span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/25703">change 25703</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/25703"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ib4c69981eab7452228ccae9ed9bc288c8baceffe </div>
<div style="display:none"> Gerrit-Change-Number: 25703 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Spiegel <richard.spiegel@silverbackltd.com> </div>