]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/Variable.c
Refine BdsDxe driver and GenericBdsLib library so that the GenericBdsLib doesn't...
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / Variable.c
index c4b83ba0ffa4476d6c2d17a09e9fdb2d45cd9a31..ef36ae2dc81b39122e62a6c8d55de76c46470df7 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Variable operation that will be used by bootmaint\r
 \r
-Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2012, 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
@@ -161,7 +161,7 @@ Var_ChangeBootOrder (
     Status = gRT->SetVariable (\r
                     L"BootOrder",\r
                     &gEfiGlobalVariableGuid,\r
-                    VAR_FLAG,\r
+                    EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                     BootOrderListSize * sizeof (UINT16),\r
                     BootOrderList\r
                     );\r
@@ -299,7 +299,7 @@ Var_ChangeDriverOrder (
     Status = gRT->SetVariable (\r
                     L"DriverOrder",\r
                     &gEfiGlobalVariableGuid,\r
-                    VAR_FLAG,\r
+                    EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                     DriverOrderListSize * sizeof (UINT16),\r
                     DriverOrderList\r
                     );\r
@@ -334,7 +334,7 @@ Var_UpdateAllConsoleOption (
     Status = gRT->SetVariable (\r
                     L"ConOut",\r
                     &gEfiGlobalVariableGuid,\r
-                    VAR_FLAG,\r
+                    EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                     GetDevicePathSize (OutDevicePath),\r
                     OutDevicePath\r
                     );\r
@@ -346,7 +346,7 @@ Var_UpdateAllConsoleOption (
     Status = gRT->SetVariable (\r
                     L"ConIn",\r
                     &gEfiGlobalVariableGuid,\r
-                    VAR_FLAG,\r
+                    EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                     GetDevicePathSize (InpDevicePath),\r
                     InpDevicePath\r
                     );\r
@@ -358,7 +358,7 @@ Var_UpdateAllConsoleOption (
     Status = gRT->SetVariable (\r
                     L"ErrOut",\r
                     &gEfiGlobalVariableGuid,\r
-                    VAR_FLAG,\r
+                    EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                     GetDevicePathSize (ErrDevicePath),\r
                     ErrDevicePath\r
                     );\r
@@ -461,7 +461,7 @@ Var_UpdateConsoleOption (
     Status = gRT->SetVariable (\r
                     ConsoleName,\r
                     &gEfiGlobalVariableGuid,\r
-                    VAR_FLAG,\r
+                    EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                     GetDevicePathSize (ConDevicePath),\r
                     ConDevicePath\r
                     );\r
@@ -663,7 +663,7 @@ Var_UpdateDriverOption (
   Status = gRT->SetVariable (\r
                   DriverString,\r
                   &gEfiGlobalVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   BufferSize,\r
                   Buffer\r
                   );\r
@@ -684,7 +684,7 @@ Var_UpdateDriverOption (
   Status = gRT->SetVariable (\r
                   L"DriverOrder",\r
                   &gEfiGlobalVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   DriverOrderListSize + sizeof (UINT16),\r
                   NewDriverOrderList\r
                   );\r
@@ -831,7 +831,7 @@ Var_UpdateBootOption (
   Status = gRT->SetVariable (\r
                   BootString,\r
                   &gEfiGlobalVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   BufferSize,\r
                   Buffer\r
                   );\r
@@ -855,7 +855,7 @@ Var_UpdateBootOption (
   Status = gRT->SetVariable (\r
                   L"BootOrder",\r
                   &gEfiGlobalVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   BootOrderListSize + sizeof (UINT16),\r
                   NewBootOrderList\r
                   );\r
@@ -920,7 +920,7 @@ Var_UpdateBootNext (
   Status = gRT->SetVariable (\r
                   L"BootNext",\r
                   &gEfiGlobalVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   sizeof (UINT16),\r
                   &NewMenuEntry->OptionNumber\r
                   );\r
@@ -980,20 +980,17 @@ Var_UpdateBootOrder (
     }\r
   }\r
 \r
-  GroupMultipleLegacyBootOption4SameType (\r
-    BootOrderList,\r
-    BootOrderListSize / sizeof (UINT16)\r
-    );\r
-\r
   Status = gRT->SetVariable (\r
                   L"BootOrder",\r
                   &gEfiGlobalVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   BootOrderListSize,\r
                   BootOrderList\r
                   );\r
   FreePool (BootOrderList);\r
 \r
+  GroupMultipleLegacyBootOption4SameType ();\r
+\r
   BOpt_FreeMenu (&BootOptionMenu);\r
   BOpt_GetBootOptions (CallbackData);\r
 \r
@@ -1057,7 +1054,7 @@ Var_UpdateDriverOrder (
   Status = gRT->SetVariable (\r
                   L"DriverOrder",\r
                   &gEfiGlobalVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   DriverOrderListSize,\r
                   NewDriverOrderList\r
                   );\r
@@ -1108,7 +1105,6 @@ Var_UpdateBBSOption (
   UINTN                       EnBootOptionCount;\r
   UINT16                      *DisBootOption;\r
   UINTN                       DisBootOptionCount;\r
-  UINT16                      *BootOrder;\r
 \r
   DisMap              = NULL;\r
   NewOrder            = NULL;\r
@@ -1219,7 +1215,7 @@ Var_UpdateBBSOption (
   Status = gRT->SetVariable (\r
                   VAR_LEGACY_DEV_ORDER,\r
                   &gEfiLegacyDevOrderVariableGuid,\r
-                  VAR_FLAG,\r
+                  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                   VarSize,\r
                   OriginalPtr\r
                   );\r
@@ -1231,39 +1227,15 @@ Var_UpdateBBSOption (
   // 1. Re-order the Option Number in BootOrder according to Legacy Dev Order\r
   //\r
   ASSERT (OptionMenu->MenuNumber == DevOrder->Length / sizeof (UINT16) - 1);\r
-  BootOrder = BdsLibGetVariableAndSize (\r
-                L"BootOrder",\r
-                &gEfiGlobalVariableGuid,\r
-                &VarSize\r
-                );\r
-  ASSERT (BootOrder != NULL);\r
-\r
-  DisBootOption = AllocatePool (VarSize);\r
-  ASSERT (DisBootOption != NULL);\r
-  EnBootOption  = AllocatePool (VarSize);\r
-  ASSERT (EnBootOption  != NULL);\r
-  \r
+\r
   OrderLegacyBootOption4SameType (\r
-    BootOrder,\r
-    VarSize / sizeof (UINT16),\r
     DevOrder->Data,\r
     DevOrder->Length / sizeof (UINT16) - 1,\r
-    EnBootOption,\r
+    &EnBootOption,\r
     &EnBootOptionCount,\r
-    DisBootOption,\r
+    &DisBootOption,\r
     &DisBootOptionCount\r
     );\r
-  \r
-  Status = gRT->SetVariable (\r
-                    L"BootOrder",\r
-                    &gEfiGlobalVariableGuid,\r
-                    VAR_FLAG,\r
-                    VarSize,\r
-                    BootOrder\r
-                    );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  FreePool (BootOrder);\r
 \r
   //\r
   // 2. Deactivate the DisBootOption and activate the EnBootOption\r
@@ -1282,7 +1254,7 @@ Var_UpdateBBSOption (
       Status = gRT->SetVariable (\r
                       VarName,\r
                       &gEfiGlobalVariableGuid,\r
-                      VAR_FLAG,\r
+                      EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                       OptionSize,\r
                       BootOptionVar\r
                       );\r
@@ -1305,7 +1277,7 @@ Var_UpdateBBSOption (
       Status = gRT->SetVariable (\r
                       VarName,\r
                       &gEfiGlobalVariableGuid,\r
-                      VAR_FLAG,\r
+                      EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
                       OptionSize,\r
                       BootOptionVar\r
                       );\r