ArmVirtPkg/PlatformBootManagerLib: Postpone the shell registration

This patch ports Gary's OvmfPkg commit 14b2ebc30c8b to ArmVirtPkg.

Turns out Gary's argument in 14b2ebc30c8b is not only valid for Xen. The
same situation arises with QEMU if:
- the user specifies no boot order via fw_cfg at all (so QemuBootOrderLib
  won't touch the boot order), and
- the varstore file has just been created from the varstore template.

In this case the user is dropped to the UEFI shell (because the shell is
registered earlier than all the auto-generated options), which is likely
not what the user wants.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Gary Lin <glin@suse.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
diff --git a/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c b/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c
index 198d060..eaafe7f 100644
--- a/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c
+++ b/ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c
@@ -424,12 +424,6 @@
              NULL, (UINT16) BootOption.OptionNumber, 0, &Esc, NULL

              );

   ASSERT (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED);

-  //

-  // Register UEFI Shell

-  //

-  PlatformRegisterFvBootOption (

-    PcdGetPtr (PcdShellFile), L"EFI Internal Shell", LOAD_OPTION_ACTIVE

-    );

 }

 

 

@@ -558,6 +552,14 @@
   // the QEMU configuration.

   //

   EfiBootManagerRefreshAllBootOption ();

+

+  //

+  // Register UEFI Shell

+  //

+  PlatformRegisterFvBootOption (

+    PcdGetPtr (PcdShellFile), L"EFI Internal Shell", LOAD_OPTION_ACTIVE

+    );

+

   SetBootOrderFromQemu ();

 }