]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/DataHubStatusCodeWorker.c
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10612 6f19259b...
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / StatusCode / RuntimeDxe / DataHubStatusCodeWorker.c
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