Zhiguang, You could avoid using memory mapped FV device path (guided FV device path) by adding FvNameGuid to EmulatorPkg.fdf file under [FV.RvRecovery] section.
[FV.FvRecovery] FvNameGuid = 6D99E806-3D38-42c2-A095-5F4300BFD7DC Thanks, Ray > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > Zhiguang Liu > Sent: Monday, April 29, 2019 1:25 PM > To: devel@edk2.groups.io > Cc: Justen, Jordan L <jordan.l.jus...@intel.com>; Andrew Fish > <af...@apple.com>; Ni, Ray <ray...@intel.com> > Subject: [edk2-devel] [PATCH 2/2] EmulatorPkg: Save the modified order > after rebooting > > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1650 > > The reason why boot order changed is that everytime Emulator > restarts, the memory mapped address will change. > This patch correct the device path to the right one. > > Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> > > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Andrew Fish <af...@apple.com> > Cc: Ray Ni <ray...@intel.com> > --- > EmulatorPkg/Library/PlatformBmLib/PlatformBm.c | 62 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ++-- > 1 file changed, 60 insertions(+), 2 deletions(-) > > diff --git a/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c > b/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c > index 191ce58cfb..28329e4f52 100644 > --- a/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c > +++ b/EmulatorPkg/Library/PlatformBmLib/PlatformBm.c > @@ -332,6 +332,63 @@ PlatformBdsRegisterStaticBootOptions ( > PrintXY (10, 50, &White, &Black, L"Enter to boot directly."); > } > > +/** > + Change the device path of the boot options to the correct one. > + and return whether it is the first time to start up emulator since last > build. > + @param FirstBoot Return 1 if it is the first time to start up emulator > since > last build. > +**/ > +VOID > +EFIAPI > +PlatformBootManagerChangeDevicePath ( > + OUT UINTN *FirstBoot > + ) > +{ > + UINTN BootOptionCount; > + EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; > + UINTN Index,LastIndex; > + UINTN Flag=0; > + *FirstBoot=1; > + BootOptions = EfiBootManagerGetLoadOptions (&BootOptionCount, > LoadOptionTypeBoot); > + for (Index = 0; Index < BootOptionCount; Index++) > + { > + if ((!StrCmp(L"UEFI Enter Setup", BootOptions[Index].Description)) || > + (!StrCmp(L"UEFI BootManagerMenuApp", > BootOptions[Index].Description)) || > + (!StrCmp(L"UEFI Shell", BootOptions[Index].Description))) > + { > + EFI_DEVICE_PATH_PROTOCOL *mypath; > + EFI_DEVICE_PATH_PROTOCOL *mynextnode; > + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; > + gBS->HandleProtocol( > + gImageHandle, > + &gEfiLoadedImageProtocolGuid, > + (VOID **)&LoadedImage); > + mynextnode = NextDevicePathNode(BootOptions[Index].FilePath); > + mypath = DevicePathFromHandle(LoadedImage->DeviceHandle); > + while (!IsDevicePathEndType(mynextnode)) > + { > + mypath = AppendDevicePathNode( > + mypath, > + mynextnode); > + mynextnode = NextDevicePathNode(mynextnode); > + } > + BootOptions[Index].FilePath = DuplicateDevicePath(mypath); > + FreePool(mypath); > + EfiBootManagerLoadOptionToVariable(&BootOptions[Index]); > + if(!StrCmp(L"UEFI Enter Setup", BootOptions[Index].Description)){ > + if (Flag!=0){ > + > EfiBootManagerDeleteLoadOptionVariable(BootOptions[LastIndex].OptionN > umber, LoadOptionTypeBoot); > + } > + Flag++; > + LastIndex=Index; > + } > + if(!StrCmp(L"UEFI Shell", BootOptions[Index].Description)){ > + *FirstBoot=0; > + } > + > + } > + } > +} > + > /** > Do the platform specific action after the console is connected. > > @@ -348,7 +405,7 @@ PlatformBootManagerAfterConsole ( > VOID > ) > { > - > + UINTN FirstBoot=1; > // > // Go the different platform policy with different boot mode > // Notes: this part code can be change with the table policy > @@ -374,9 +431,10 @@ PlatformBootManagerAfterConsole ( > case BOOT_WITH_DEFAULT_SETTINGS: > default: > PlatformBdsDiagnostics (IGNORE, TRUE); > - PlatformBdsRegisterStaticBootOptions (); > + PlatformBootManagerChangeDevicePath(&FirstBoot); > PlatformBdsConnectSequence (); > EfiBootManagerRefreshAllBootOption (); > + PlatformBdsRegisterStaticBootOptions (); > break; > } > } > -- > 2.21.0.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#39986): https://edk2.groups.io/g/devel/message/39986 Mute This Topic: https://groups.io/mt/31380243/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-