From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by mx.groups.io with SMTP id smtpd.web12.4591.1630411884256332414 for ; Tue, 31 Aug 2021 05:11:24 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YPQSNCRs; spf=pass (domain: kernel.org, ip: 198.145.29.99, mailfrom: ardb@kernel.org) Received: by mail.kernel.org (Postfix) with ESMTPSA id 6019D60FED for ; Tue, 31 Aug 2021 12:11:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1630411883; bh=+sIZjZG0L5JMNPxOEkoswIh1f8hoXCSkTFzDStBynzw=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=YPQSNCRsEozavdE8ONUWJorcq4bBzLZ+GpZ81qXz2gwLKFW86jp8PcWFoAwqDt34b GoqoBl3hLNSGf6K//THohk4oW41/5DOvq7LW2EJsAgXJoJSKN03ym6B0RnoW3bCBOs 1P/Bhv5O87Nsz7xSQqDVtsnslm6RC/tulYH0odtXuo6yJwDJ66yt/q2qeE1wRFqk1d Nh0VZ1fmuAesMHNjtNF2BRNyHop8xvyNNp8lwIDerT+lxeTXDvr5jDysRiHIXn6cQf cKexN6ZPTm8nuPvJ405FOK5lI0Tqt8L5VT39wAN/HBp3mVFSdk5XSF3FN/QnP8w0Ip eOyqOdk5uJoIA== Received: by mail-oi1-f181.google.com with SMTP id h133so24023861oib.7 for ; Tue, 31 Aug 2021 05:11:23 -0700 (PDT) X-Gm-Message-State: AOAM531IT3cen7n8AfdPje5gXoHnxeeDfh0y0+MA0Ay1z4VBgG9LlIzq w9otteRxS7YDZooJ6/U8pJrUd0r2/k/oSjB+w/s= X-Google-Smtp-Source: ABdhPJwQOseVl9nbT8xSDAqU7wdzP5lbOxbLQOioHBh1F6Q7lz47u09MSLH4SwxMx52qN2OP9UF2Es5gS2ImCeDaro4= X-Received: by 2002:aca:ea54:: with SMTP id i81mr2846073oih.174.1630411882670; Tue, 31 Aug 2021 05:11:22 -0700 (PDT) MIME-Version: 1.0 References: <20210818073811.3571796-1-gjb@semihalf.com> In-Reply-To: <20210818073811.3571796-1-gjb@semihalf.com> From: "Ard Biesheuvel" Date: Tue, 31 Aug 2021 14:11:11 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [edk2-platforms PATCH] Platform/RaspberryPi: Check for Boot Discovery Policy change. To: Grzegorz Bernacki Cc: devel@edk2.groups.io, leif@nuviainc.com, ardb+tianocore@kernel.org, Samer.El-Haj-Mahmoud@arm.com, sunny.Wang@arm.com, mw@semihalf.com, upstream@semihalf.com, pete@akeo.ie Content-Type: text/plain; charset="UTF-8" On Wed, 18 Aug 2021 at 09:38, Grzegorz Bernacki 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 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 >