On Wed, 1 Sept 2021 at 10:45, Grzegorz Bernacki <g...@semihalf.com> wrote: > > 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 for the explanation. I would prefer to find the root cause first. Pasting this workaround all over the place is really not the right way to deal with this. > > 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 (#80065): https://edk2.groups.io/g/devel/message/80065 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] -=-=-=-=-=-=-=-=-=-=-=-