]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/SerialStatusCodeWorker.c
MdeModulePkg/Universal/StatusCodeHandler: Fix a bug about log lost
[mirror_edk2.git] / MdeModulePkg / Universal / StatusCodeHandler / RuntimeDxe / SerialStatusCodeWorker.c
index 0b98e7ec6315f81f10a344ba3ec5f2614f0dc8b9..348f55edba544c44ca18dd04c5e99f3e925a3f1c 100644 (file)
@@ -151,6 +151,16 @@ SerialStatusCodeReportWorker (
   //\r
   SerialPortWrite ((UINT8 *) Buffer, CharCount);\r
 \r
+  //\r
+  // If register an unregister function of gEfiEventExitBootServicesGuid,\r
+  // then some log called in ExitBootServices() will be lost,\r
+  // so unregister the handler after receive the value of exit boot service.\r
+  //\r
+  if ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE &&\r
+      Value == (EFI_SOFTWARE_EFI_BOOT_SERVICE | EFI_SW_BS_PC_EXIT_BOOT_SERVICES)) {\r
+    UnregisterSerialBootTimeHandlers();\r
+  }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r