[edk2-devel] [edk2-platforms PATCH] Platform/RaspberryPi: Check for Boot Discovery Policy change.
Ard Biesheuvel
ardb at kernel.org
Wed Sep 1 08:48:50 UTC 2021
On Wed, 1 Sept 2021 at 10:45, Grzegorz Bernacki <gjb at 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 <ardb at kernel.org> napisał(a):
> >
> > On Wed, 18 Aug 2021 at 09:38, Grzegorz Bernacki <gjb at 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 <gjb at 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/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list