]> git.proxmox.com Git - mirror_edk2.git/commitdiff
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10612 6f19259b...
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 29 Jun 2010 09:14:31 +0000 (09:14 +0000)
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 29 Jun 2010 09:14:31 +0000 (09:14 +0000)
IntelFrameworkModulePkg/Universal/StatusCode/Pei/MemoryStausCodeWorker.c
IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/DataHubStatusCodeWorker.c
IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.c

index e767e6b147d2469890e4c2e9b818165542c3d561..34ccc795289e02d14d0a1091823652f2f37577b2 100644 (file)
@@ -104,11 +104,10 @@ MemoryStatusCodeReportWorker (
   PacketIndex = 0;\r
 \r
   //\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
+  // Journal GUID'ed HOBs to find empty record entry. \r
   //\r
   Hob.Raw = GetFirstGuidHob (&gMemoryStatusCodeRecordGuid);\r
-  while (Hob.Raw != NULL) {\r
+  while ((Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw)) != NULL) {\r
     PacketHeader = (MEMORY_STATUSCODE_PACKET_HEADER *) GET_GUID_HOB_DATA (Hob.Guid);\r
 \r
     //\r
@@ -124,17 +123,14 @@ MemoryStatusCodeReportWorker (
     //\r
     PacketIndex++;\r
 \r
-    Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw);\r
+    Hob.Raw = GET_NEXT_HOB (Hob);\r
   }\r
 \r
   if (Record == NULL) {\r
     //\r
-    // No available entry found, so create new packet.\r
+    // No available entry found\r
     //\r
-    PacketHeader = CreateMemoryStatusCodePacket (PacketIndex);\r
-\r
-    Record = (MEMORY_STATUSCODE_RECORD *) (PacketHeader + 1);\r
-    Record = &Record[PacketHeader->RecordIndex++];\r
+    return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
   Record->CodeType = CodeType;\r
index 5c1616e14bf08cbd965506239dd11fdc4ffe02b2..92ca20a2ed2d4714064c4334402948066273d528 100644 (file)
@@ -24,7 +24,7 @@ EFI_EVENT                 mLogDataHubEvent;
 //\r
 // Cache data hub protocol.\r
 //\r
-EFI_DATA_HUB_PROTOCOL     *mDataHubProtocol;\r
+EFI_DATA_HUB_PROTOCOL     *mDataHubProtocol = NULL;\r
 \r
 \r
 /**\r
@@ -189,6 +189,7 @@ DataHubStatusCodeReportWorker (
   BASE_LIST                         Marker;\r
   CHAR8                             *Format;\r
   UINTN                             CharCount;\r
+  EFI_STATUS                        Status;\r
 \r
   //\r
   // Use atom operation to avoid the reentant of report.\r
@@ -205,6 +206,13 @@ DataHubStatusCodeReportWorker (
     return EFI_DEVICE_ERROR;\r
   }\r
 \r
+  if (mDataHubProtocol == NULL) {\r
+    Status = DataHubStatusCodeInitializeWorker ();\r
+    if (EFI_ERROR (Status)) {\r
+      return Status;\r
+    }\r
+  }\r
+  \r
   Record = AcquireRecordBuffer ();\r
   if (Record == NULL) {\r
     //\r
@@ -358,7 +366,10 @@ DataHubStatusCodeInitializeWorker (
                   NULL, \r
                   (VOID **) &mDataHubProtocol\r
                   );\r
-  ASSERT_EFI_ERROR (Status);\r
+  if (EFI_ERROR (Status)) {\r
+    mDataHubProtocol = NULL;\r
+    return Status;\r
+  }\r
 \r
   //\r
   // Create a Notify Event to log data in Data Hub\r
index cb2c271124469dd2d45ad68e0fe0223eadcbe825..8807bbac4e9d16bf0a746bf9a1e76d377867b776 100644 (file)
@@ -226,8 +226,7 @@ InitializationDispatcherWorker (
     ASSERT_EFI_ERROR (Status);\r
   }\r
   if (FeaturePcdGet (PcdStatusCodeUseDataHub)) {\r
-    Status = DataHubStatusCodeInitializeWorker ();\r
-    ASSERT_EFI_ERROR (Status);\r
+    DataHubStatusCodeInitializeWorker ();\r
   }\r
   if (FeaturePcdGet (PcdStatusCodeUseOEM)) {\r
     //\r