]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/StatusCode/Pei/MemoryStausCodeWorker.c
roll back last check-in.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / StatusCode / Pei / MemoryStausCodeWorker.c
index 34ccc795289e02d14d0a1091823652f2f37577b2..e767e6b147d2469890e4c2e9b818165542c3d561 100644 (file)
@@ -104,10 +104,11 @@ MemoryStatusCodeReportWorker (
   PacketIndex = 0;\r
 \r
   //\r
-  // Journal GUID'ed HOBs to find empty record entry. \r
+  // Journal GUID'ed HOBs to find empty record entry. if found, then save status code in it.\r
+  // otherwise, create a new GUID'ed HOB.\r
   //\r
   Hob.Raw = GetFirstGuidHob (&gMemoryStatusCodeRecordGuid);\r
-  while ((Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw)) != NULL) {\r
+  while (Hob.Raw != NULL) {\r
     PacketHeader = (MEMORY_STATUSCODE_PACKET_HEADER *) GET_GUID_HOB_DATA (Hob.Guid);\r
 \r
     //\r
@@ -123,14 +124,17 @@ MemoryStatusCodeReportWorker (
     //\r
     PacketIndex++;\r
 \r
-    Hob.Raw = GET_NEXT_HOB (Hob);\r
+    Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw);\r
   }\r
 \r
   if (Record == NULL) {\r
     //\r
-    // No available entry found\r
+    // No available entry found, so create new packet.\r
     //\r
-    return EFI_OUT_OF_RESOURCES;\r
+    PacketHeader = CreateMemoryStatusCodePacket (PacketIndex);\r
+\r
+    Record = (MEMORY_STATUSCODE_RECORD *) (PacketHeader + 1);\r
+    Record = &Record[PacketHeader->RecordIndex++];\r
   }\r
 \r
   Record->CodeType = CodeType;\r