Revision: 18862
          http://sourceforge.net/p/edk2/code/18862
Author:   niruiyu
Date:     2015-11-17 10:14:13 +0000 (Tue, 17 Nov 2015)
Log Message:
-----------
MdeModulePkg: Add PlatformRecovery#### pointing to default file path

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <[email protected]>
Reviewed-by: Sunny Wang <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Universal/BdsDxe/BdsEntry.c

Modified: trunk/edk2/MdeModulePkg/Universal/BdsDxe/BdsEntry.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/BdsDxe/BdsEntry.c 2015-11-17 10:13:21 UTC 
(rev 18861)
+++ trunk/edk2/MdeModulePkg/Universal/BdsDxe/BdsEntry.c 2015-11-17 10:14:13 UTC 
(rev 18862)
@@ -823,11 +823,12 @@
   UINT16                          BootTimeOut;
   EDKII_VARIABLE_LOCK_PROTOCOL    *VariableLock;
   UINTN                           Index;
-  EFI_BOOT_MANAGER_LOAD_OPTION    BootOption;
+  EFI_BOOT_MANAGER_LOAD_OPTION    LoadOption;
   UINT16                          *BootNext;
   CHAR16                          BootNextVariableName[sizeof ("Boot####")];
   EFI_BOOT_MANAGER_LOAD_OPTION    BootManagerMenu;
   BOOLEAN                         BootFwUi;
+  EFI_DEVICE_PATH_PROTOCOL        *FilePath;
 
   HotkeyTriggered = NULL;
   Status          = EFI_SUCCESS;
@@ -943,6 +944,27 @@
   InitializeLanguage (TRUE);
 
   //
+  // System firmware must include a PlatformRecovery#### variable specifying
+  // a short-form File Path Media Device Path containing the platform default
+  // file path for removable media
+  //
+  FilePath = FileDevicePath (NULL, EFI_REMOVABLE_MEDIA_FILE_NAME);
+  Status = EfiBootManagerInitializeLoadOption (
+             &LoadOption,
+             0,
+             LoadOptionTypePlatformRecovery,
+             LOAD_OPTION_ACTIVE,
+             L"Default PlatformRecovery",
+             FilePath,
+             NULL,
+             0
+             );
+  ASSERT_EFI_ERROR (Status);
+  EfiBootManagerLoadOptionToVariable (&LoadOption);
+  EfiBootManagerFreeLoadOption (&LoadOption);
+  FreePool (FilePath);
+
+  //
   // Report Status Code to indicate connecting drivers will happen
   //
   REPORT_STATUS_CODE (
@@ -1120,17 +1142,17 @@
   //
   if (BootNext != NULL) {
     UnicodeSPrint (BootNextVariableName, sizeof (BootNextVariableName), 
L"Boot%04x", *BootNext);
-    Status = EfiBootManagerVariableToLoadOption (BootNextVariableName, 
&BootOption);
+    Status = EfiBootManagerVariableToLoadOption (BootNextVariableName, 
&LoadOption);
     if (!EFI_ERROR (Status)) {
-      EfiBootManagerBoot (&BootOption);
-      EfiBootManagerFreeLoadOption (&BootOption);
-      if (BootOption.Status == EFI_SUCCESS) {
+      EfiBootManagerBoot (&LoadOption);
+      EfiBootManagerFreeLoadOption (&LoadOption);
+      if (LoadOption.Status == EFI_SUCCESS) {
         //
         // Boot to Boot Manager Menu upon EFI_SUCCESS
         //
-        EfiBootManagerGetBootManagerMenu (&BootOption);
-        EfiBootManagerBoot (&BootOption);
-        EfiBootManagerFreeLoadOption (&BootOption);
+        EfiBootManagerGetBootManagerMenu (&LoadOption);
+        EfiBootManagerBoot (&LoadOption);
+        EfiBootManagerFreeLoadOption (&LoadOption);
       }
     }
   }


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to