Hi Ard, The problem is that for some reason EfiBootManagerRefreshAllBootOption () overwrites BootOrder. For example, if USB bootable device is removed from the top and added at the bottom of the list. I will debug the problem further, however this patch is needed to retain correct boot order unless I find the root cause of the problem. thanks, greg
wt., 31 sie 2021 o 14:11 Ard Biesheuvel <a...@kernel.org> napisał(a): > > On Wed, 18 Aug 2021 at 09:38, Grzegorz Bernacki <g...@semihalf.com> wrote: > > > > This patch adds checks if Boot Discovery Policy has been > > changed. Only in that case EfiBootManagerRefreshAllBootOption() > > should be called. > > > > Signed-off-by: Grzegorz Bernacki <g...@semihalf.com> > > To be honest, I'm not a fan of this bodge. Can you explain why we need > two separate EFI variables to keep track of this state? > > > > --- > > Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c | 24 > > +++++++++++++++++++- > > 1 file changed, 23 insertions(+), 1 deletion(-) > > > > diff --git > > a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c > > b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c > > index c8305ce4f5..378ba0ebf4 100644 > > --- a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c > > +++ b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c > > @@ -617,6 +617,7 @@ BootDiscoveryPolicyHandler ( > > { > > EFI_STATUS Status; > > UINT32 DiscoveryPolicy; > > + UINT32 DiscoveryPolicyOld; > > UINTN Size; > > EFI_BOOT_MANAGER_POLICY_PROTOCOL *BMPolicy; > > EFI_GUID *Class; > > @@ -678,7 +679,28 @@ BootDiscoveryPolicyHandler ( > > return Status; > > } > > > > - EfiBootManagerRefreshAllBootOption(); > > + // > > + // Refresh Boot Options if Boot Discovery Policy has been changed > > + // > > + Size = sizeof (DiscoveryPolicyOld); > > + Status = gRT->GetVariable ( > > + BOOT_DISCOVERY_POLICY_OLD_VAR, > > + &gBootDiscoveryPolicyMgrFormsetGuid, > > + NULL, > > + &Size, > > + &DiscoveryPolicyOld > > + ); > > + if ((Status == EFI_NOT_FOUND) || (DiscoveryPolicyOld != > > DiscoveryPolicy)) { > > + EfiBootManagerRefreshAllBootOption(); > > + > > + Status = gRT->SetVariable ( > > + BOOT_DISCOVERY_POLICY_OLD_VAR, > > + &gBootDiscoveryPolicyMgrFormsetGuid, > > + EFI_VARIABLE_NON_VOLATILE | > > EFI_VARIABLE_BOOTSERVICE_ACCESS, > > + sizeof (DiscoveryPolicyOld), > > + &DiscoveryPolicy > > + ); > > + } > > > > return EFI_SUCCESS; > > } > > -- > > 2.25.1 > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#80064): https://edk2.groups.io/g/devel/message/80064 Mute This Topic: https://groups.io/mt/84967553/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-