]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
IntelFrameworkModulePkg: Put report status code after event was signaled per PI spec.
[mirror_edk2.git] / IntelFrameworkModulePkg / Library / GenericBdsLib / BdsBoot.c
index c58c6fd87ff47a2943a161cb138155071dae04f7..e02a71015edcbbd066447c1e4b92c2a284c33733 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   BDS Lib functions which relate with create or process the boot option.\r
 \r
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -1042,7 +1042,7 @@ BdsCreateDevOrder (
   Status = gRT->SetVariable (\r
                   VAR_LEGACY_DEV_ORDER,\r
                   &gEfiLegacyDevOrderVariableGuid,\r
-                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   TotalSize,\r
                   DevOrder\r
                   );\r
@@ -1363,7 +1363,7 @@ BdsUpdateLegacyDevOrder (
   Status = gRT->SetVariable (\r
                   VAR_LEGACY_DEV_ORDER,\r
                   &gEfiLegacyDevOrderVariableGuid,\r
-                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   TotalSize,\r
                   NewDevOrder\r
                   );\r
@@ -1413,7 +1413,7 @@ BdsSetBootPriority4SameTypeDev (
       break;\r
     }\r
 \r
-    DevOrderPtr = (LEGACY_DEV_ORDER_ENTRY *) ((UINT8 *) DevOrderPtr + sizeof (BBS_TYPE) + DevOrderPtr->Length);\r
+    DevOrderPtr = (LEGACY_DEV_ORDER_ENTRY *) ((UINTN) DevOrderPtr + sizeof (BBS_TYPE) + DevOrderPtr->Length);\r
   }\r
 \r
   if ((UINT8 *) DevOrderPtr >= (UINT8 *) DevOrder + DevOrderSize) {\r
@@ -1642,6 +1642,8 @@ BdsRefreshBbsTableForBoot (
     }\r
   }\r
 \r
+  FreePool (DeviceType);\r
+\r
   if (BootOrder != NULL) {\r
     FreePool (BootOrder);\r
   }\r
@@ -2281,14 +2283,14 @@ BdsLibBootViaBootOption (
   }\r
 \r
   //\r
-  // Report Status Code to indicate ReadyToBoot event will be signalled\r
+  // Signal the EVT_SIGNAL_READY_TO_BOOT event\r
   //\r
-  REPORT_STATUS_CODE (EFI_PROGRESS_CODE, (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT));\r
+  EfiSignalEventReadyToBoot();\r
 \r
   //\r
-  // Signal the EVT_SIGNAL_READY_TO_BOOT event\r
+  // Report Status Code to indicate ReadyToBoot event was signalled\r
   //\r
-  EfiSignalEventReadyToBoot();\r
+  REPORT_STATUS_CODE (EFI_PROGRESS_CODE, (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT));\r
 \r
   //\r
   // Expand USB Class or USB WWID device path node to be full device path of a USB\r
@@ -3568,6 +3570,8 @@ BdsLibBootNext (
     ASSERT (BootOption != NULL);\r
     BdsLibConnectDevicePath (BootOption->DevicePath);\r
     BdsLibBootViaBootOption (BootOption, BootOption->DevicePath, &ExitDataSize, &ExitData);\r
+    FreePool(BootOption);\r
+    FreePool(BootNext);\r
   }\r
 \r
 }\r