Sunny, Thanks for your comments. Thanks, Ray
> -----Original Message----- > From: Wang, Sunny (HPS SW) <sunnyw...@hpe.com> > Sent: Wednesday, December 18, 2019 11:54 AM > To: disc...@edk2.groups.io; ashishsin...@nvidia.com; Jeff Brasen > <jbra...@nvidia.com>; Ni, Ray <ray...@intel.com>; > devel@edk2.groups.io; Laszlo Ersek <ler...@redhat.com>; af...@apple.com > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Gao, Zhichao <zhichao....@intel.com>; > Kinney, Michael D <michael.d.kin...@intel.com>; Wang, Sunny (HPS SW) > <sunnyw...@hpe.com> > Subject: RE: [edk2-discuss] [edk2-devel] [PATCH] Support skipping automatic > BM enumeration > > Sorry for the delay. Somehow I didn't catch the follow-up email. Thanks for > checking my comments, Ray and Ashish. > Yeah, agree. 2.b is better. I will review the code change. > > Regards, > Sunny Wang > > -----Original Message----- > From: disc...@edk2.groups.io [mailto:disc...@edk2.groups.io] On Behalf Of > Ashish Singhal > Sent: Wednesday, December 18, 2019 4:16 AM > To: Jeff Brasen <jbra...@nvidia.com>; Ni, Ray <ray...@intel.com>; > devel@edk2.groups.io; Laszlo Ersek > <ler...@redhat.com>; af...@apple.com; disc...@edk2.groups.io > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Gao, Zhichao <zhichao....@intel.com>; > Kinney, Michael D <michael.d.kin...@intel.com> > Subject: Re: [edk2-discuss] [edk2-devel] [PATCH] Support skipping automatic > BM enumeration > > I have submitted a patch based on 2.b as suggested by Ray. I am open to > making changes in the structure of the protocol > functions as well as the verbal description. Please let me know what you all > think about it. > > Thanks > Ashish > ________________________________ > From: Jeff Brasen <jbra...@nvidia.com> > Sent: Thursday, December 12, 2019 10:52 AM > To: Ni, Ray <ray...@intel.com>; devel@edk2.groups.io <devel@edk2.groups.io>; > Laszlo Ersek <ler...@redhat.com>; > af...@apple.com <af...@apple.com>; disc...@edk2.groups.io > <disc...@edk2.groups.io> > Cc: Ashish Singhal <ashishsin...@nvidia.com>; Wang, Jian J > <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Gao, Zhichao <zhichao....@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com> > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > Thanks for the summary Ray, for the problem summary only thing I would add > would be that platform also wants to > create/modify boot options when full enumeration is requested as well. > > For solutions I prefer option 2 as we don't have to put the same logic > everywhere of how to modify the default > enumerated list. And if we do that 2b makes more sense as then we don't have > to modify all of the existing platforms. > > I see two things the platform would need to do. > > 1. Update list created in BmEnumerateBootOptions > 2. Delete any no longer valid platform created boot options > > > Thanks, > > Jeff > > ________________________________ > From: Ni, Ray <ray...@intel.com> > Sent: Wednesday, December 11, 2019 7:00 AM > To: Jeff Brasen <jbra...@nvidia.com>; devel@edk2.groups.io > <devel@edk2.groups.io>; Laszlo Ersek <ler...@redhat.com>; > af...@apple.com <af...@apple.com>; disc...@edk2.groups.io > <disc...@edk2.groups.io> > Cc: Ashish Singhal <ashishsin...@nvidia.com>; Wang, Jian J > <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Gao, Zhichao <zhichao....@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com> > Subject: RE: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > External email: Use caution opening links or attachments > > > Jeff, > > Tom from AMD booked the meeting for SEV discussion months ago. I am afraid > there is no time for this discussion. > > Let's try to resolve it in mails. > > > > Firstly, let me rephase the problem and your proposed solutions here > (subjective + verb + objective). Sunny's input is also > included. Hope Mike K and others can provide inputs. > > Personally, I agree with 2.b. It helps us to gradually migrate the > PlatformBootManagerLib to PlatformBootManager > protocol. Protocol with Revision field helps to reduce the impact to old > platforms with new APIs added. > > > > **Problem: > > Platform requires certain BlockIo/SimpleFileSystem/LoadFile > instances don't cause Boot#### created. It's a need > of platform customization. > > > > **Details: > > Boot#### for BlockIo/SimpleFileSystem/LoadFile are created by > API EfiBootMangerRefreshAllBootOptions(). There > are 2 places that call this API: > > 1. Platform Boot Manager calls the API (usually in the full configuration > boot path) > 2. UiApp calls the API when entering "Boot Manager" page and "Boot > Maintenance Manager" page. > > > > Platform can change Platform Boot Manager to remove the unneeded Boot#### in > case #1. > > But platform has no way to remove the Boot#### created in case #2 . > > > > **Potential solutions: > > 1. Update UiApp > * Define a new PCD and a new event group. > > If PCD is TRUE, UiApp signals the event. Event callback creates the Boot####. > Otherwise, > EfiBootManagerRefreshAllBootOptions() is called. > > * Add a new PlatformBootManagerLib API (implemented by platform). > > UiApp calls the new API instead of EfiBootManagerRefreshAllBootOption. (need > to coordinate rollout with updates to all > platforms). > > * Add a new protocol (implemented by platform). > > UiApp calls the new protocol if it exists otherwise calls > EfiBootManagerRefreshAllBootOption. > > > > 1. Update EfiBootManagerRefreshAllBootOptions() > * Add a new library class (implemented by platform). > > EfiBootManagerRefreshAllBootOption() calls the new library class. > > * Add a new PlatformBootManager protocol (implemented by platform). > > EfiBootManagerRefreshAllBootOption() calls the new protocol if it exists. > > > > Thanks, > > Ray > > > > From: Jeff Brasen <jbra...@nvidia.com> > Sent: Wednesday, December 11, 2019 4:46 AM > To: Ni, Ray <ray...@intel.com>; devel@edk2.groups.io; Laszlo Ersek > <ler...@redhat.com>; af...@apple.com; > disc...@edk2.groups.io > Cc: Ashish Singhal <ashishsin...@nvidia.com>; Wang, Jian J > <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Gao, Zhichao <zhichao....@intel.com>; Kinney, Michael D > <michael.d.kin...@intel.com> > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > Can we discuss this at the design meeting this week (12/12)? > > > > Thanks, > > Jeff > > ________________________________ > > From: Jeff Brasen > Sent: Thursday, November 14, 2019 10:04 AM > To: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>>; > devel@edk2.groups.io<mailto:devel@edk2.groups.io> > <devel@edk2.groups.io<mailto:devel@edk2.groups.io>>; Laszlo Ersek > <ler...@redhat.com<mailto:ler...@redhat.com>>; > af...@apple.com<mailto:af...@apple.com> > <af...@apple.com<mailto:af...@apple.com>> > Cc: Ashish Singhal <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; > Wang, Jian J > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; > Gao, Zhichao <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, > Michael D > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > Subject: RE: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > Yes, I think that would be good. > > > > Summarizing everything in this thread > > > > Problem: Platform needs to customize the boot options, this can be done for > normal boot but the UiApp calls > EfiBootManagerRefreshAllBootOption in a couple places. > > > > Potential solutions: > > 1 - Define new PCD and event group if PCD is set true then signal event > instead of calling > EfiBootManagerRefreshAllBootOption in UiApp > > 2 - Add new function to boot manager library and replace call to > EfiBootManagerRefreshAllBootOption in UiApp (need to > coordinate rollout with updates to all platform. > > 3 - Add new protocol with new function, if supported call this otherwise call > EfiBootManagerRefreshAllBootOption as is > done now > > 4 - For 2/3 use generic function so we don't need new APIs for future > expansion > > 5 - Update EfiBootManagerRefreshAllBootOption to call platform specific > function. > > > > Thanks, > Jeff > > > > > > From: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>> > Sent: Wednesday, November 13, 2019 7:09 PM > To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Jeff Brasen > <jbra...@nvidia.com<mailto:jbra...@nvidia.com>>; > Laszlo Ersek <ler...@redhat.com<mailto:ler...@redhat.com>>; > af...@apple.com<mailto:af...@apple.com> > Cc: Ashish Singhal <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; > Wang, Jian J > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; > Gao, Zhichao <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, > Michael D > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > Subject: RE: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > Jeff, > > I think it's a good topic that we could discuss in the open design meeting. > > Are you ok to present the problem you have and discuss the potential > solutions in that meeting? > > https://github.com/tianocore/tianocore.github.io/wiki/Design-Meeting > > > > Thanks, > > Ray > > > > From: devel@edk2.groups.io<mailto:devel@edk2.groups.io> > <devel@edk2.groups.io<mailto:devel@edk2.groups.io>> On > Behalf Of Jeff Brasen > Sent: Thursday, November 14, 2019 2:43 AM > To: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>>; > devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Laszlo > Ersek <ler...@redhat.com<mailto:ler...@redhat.com>>; > af...@apple.com<mailto:af...@apple.com> > Cc: Ashish Singhal <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; > Wang, Jian J > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; > Gao, Zhichao <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, > Michael D > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > Thinking about this more I think we could do this with a PCD and a new group > event without having to define any new > function interfaces. > > > > We could change UiApp and BootManagerMenuApp (and any others that are > relevant) from > > > > EfiBootManagerRefreshAllBootOption (); > > > > to > > > > if (FeaturePcdGet (PcdEventBasedRefreshAllBootOptionSupport) { > > EFI_EVENT Event; > > gBS->CreateEventEx ( 0, 0, NULL, NULL, &gEventBasedRefreshGuid, &Event ); > > gBS->SignalEvent (Event); > > gBS->CloseEvent (Event); > > } else { > > EfiBootManagerRefreshAllBootOption (); > > } > > > > Then a platform that wants to do this on its own would just set this pcd and > create a group event and do what it needs to > do there. > > > > Thanks, > > Jeff > > ________________________________ > > From: Jeff Brasen <jbra...@nvidia.com<mailto:jbra...@nvidia.com>> > Sent: Monday, November 11, 2019 5:00 PM > To: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>>; > devel@edk2.groups.io<mailto:devel@edk2.groups.io> > <devel@edk2.groups.io<mailto:devel@edk2.groups.io>>; Laszlo Ersek > <ler...@redhat.com<mailto:ler...@redhat.com>>; > af...@apple.com<mailto:af...@apple.com> > <af...@apple.com<mailto:af...@apple.com>> > Cc: Ashish Singhal <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; > Wang, Jian J > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; > Gao, Zhichao <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, > Michael D > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > I am not sure a PCD would work (unless I am missing something) We do want to > do a connect all and re-enumerate in > UiApp but we need the platform code to be involved in that process. > > > > Thanks, > > Jeff > > ________________________________ > > From: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>> > Sent: Monday, November 11, 2019 4:58 PM > To: devel@edk2.groups.io<mailto:devel@edk2.groups.io> > <devel@edk2.groups.io<mailto:devel@edk2.groups.io>>; Jeff > Brasen <jbra...@nvidia.com<mailto:jbra...@nvidia.com>>; Laszlo Ersek > <ler...@redhat.com<mailto:ler...@redhat.com>>; > af...@apple.com<mailto:af...@apple.com> > <af...@apple.com<mailto:af...@apple.com>> > Cc: Ashish Singhal <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; > Wang, Jian J > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; > Gao, Zhichao <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, > Michael D > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > Subject: RE: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > Jeff, > > If adding a PCD to control UiApp can meet the real needs, I prefer to do in > that way instead of adding new APIs to > PlatformBootManagerLib. > > > > Thanks, > > Ray > > > > From: devel@edk2.groups.io<mailto:devel@edk2.groups.io> > <devel@edk2.groups.io<mailto:devel@edk2.groups.io>> On > Behalf Of Jeff Brasen > Sent: Tuesday, November 12, 2019 6:58 AM > To: Laszlo Ersek <ler...@redhat.com<mailto:ler...@redhat.com>>; Ni, Ray > <ray...@intel.com<mailto:ray...@intel.com>>; > devel@edk2.groups.io<mailto:devel@edk2.groups.io>; > af...@apple.com<mailto:af...@apple.com> > Cc: Ashish Singhal <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; > Wang, Jian J > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; > Gao, Zhichao <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, > Michael D > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > If we are concerned about deploying this and breaking builds we could do this > via a new protocol instead. In that case > though we would leave the old default behavior in the code to handle > platforms that didn't implement the new protocol, > so this might not be the cleanest way to deploy this. > > > > We could also look at adding a generic platform boot hook function (either as > a library function or protocol) if we wanted > to limit the number of disruption on new customization hooks. Something like > > > > EFI_STATUS PlatformBootNotify (CONST EFI_GUID *NotificationType, VOID > *ContextData OPTIONAL) > > > > Where Notification type describes where we are that we want platform to > potentially handle and ContextData is per type > caller allocated data that provides additional in/out data. This has the same > issue of leaving the current default behavior > in place for unsupported types as well as being a less than specific function > to describe. > > > > Thanks, > > Jeff > > > > ________________________________ > > From: Laszlo Ersek <ler...@redhat.com<mailto:ler...@redhat.com>> > Sent: Friday, November 8, 2019 9:37 AM > To: Jeff Brasen <jbra...@nvidia.com<mailto:jbra...@nvidia.com>>; Ni, Ray > <ray...@intel.com<mailto:ray...@intel.com>>; > devel@edk2.groups.io<mailto:devel@edk2.groups.io> > <devel@edk2.groups.io<mailto:devel@edk2.groups.io>>; > af...@apple.com<mailto:af...@apple.com> > <af...@apple.com<mailto:af...@apple.com>> > Cc: Ashish Singhal <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; > Wang, Jian J > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; > Gao, Zhichao <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, > Michael D > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM enumeration > > > > On 11/07/19 18:46, Jeff Brasen wrote: > > Fixing UiApp seems reasonable, I do think we would want a hook to the > > platform library in here as the enumeration that > occurs in the UiApp is intended to do a full enumeration of the system and > there may be platform specifics to how that > occurs. > > Fully agreed -- entering UiApp should expose everything bootable in the > system, unless (perhaps) PlatformBootManagerLib > specifically thinks otherwise. > > Of course, then we arrive (again) at the problem that a call in > UefiBootManagerLib, to a *new* PlatformBootManagerLib > API, will break tens of out-of-tree platforms. :) > > I think that can be prevented, as follows; but it will take quite some time: > > - introduce the new function declaration in "PlatformBootManagerLib.h", > - modify all platforms (in tree and out of tree) to implement (define) the > new function, > - call the new function from UefiBootManagerLib > > For some history / background on this kind of problem, I suggest reading > through: > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__bugzilla.tianocore.org_show-5Fbug.cgi-3Fid-3D982&d=DwIF- > g&c=C5b8zRQO1miGmBeVZ2LFWg&r=Z9cLgEMdGZCI1_R0bW6KqOAGzCXLJUR24f8N3205AYw&m=EzQH7xR5u0kejdb3Oa18jq > GGrV5AO_ROvd_Y_ajQQMk&s=cTZCJVE04A0qq4imb3Pma8jdJIrunDornyDXBty-1Uk&e= > > Thanks, > Laszlo > > > From: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>> > > Sent: Thursday, November 7, 2019 12:21 AM > > To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Jeff Brasen > > <jbra...@nvidia.com<mailto:jbra...@nvidia.com>>; > > af...@apple.com<mailto:af...@apple.com> > > Cc: Ashish Singhal > > <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com>>; Laszlo > > Ersek <ler...@redhat.com<mailto:ler...@redhat.com>>; Wang, Jian J > > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com>>; Wu, Hao A > > <hao.a...@intel.com<mailto:hao.a...@intel.com>>; Gao, Zhichao > > <zhichao....@intel.com<mailto:zhichao....@intel.com>>; Kinney, Michael > > D <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>> > > Subject: RE: [edk2-devel] [PATCH] Support skipping automatic BM > > enumeration > > > > I treat the issue in this way: > > > > 1. Platform Boot Manager library does a good job. It doesn't always call > > RefreshAll() API to auto-create the boot > options > > 2. But UiApp doesn't. It constantly call RefreshAll(). > > > > Do you think that we can fix UiApp instead? For example, introducing a PCD > > to control the boot option refresh behavior? > > > > Thanks, > > Ray > > > > From: > > devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gro > > ups.io%3cmailto:devel@edk2.groups.io>> > > <devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gr > > oups.io%3cmailto:devel@edk2.groups.io>>> On Behalf Of Jeff Brasen > > Sent: Thursday, November 7, 2019 3:02 PM > > To: Ni, Ray > > <ray...@intel.com<mailto:ray...@intel.com<mailto:ray...@intel.com%3cma > > ilto:ray...@intel.com>>>; af...@apple.com<mailto:af...@apple.com> > > Cc: > > devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gro > > ups.io%3cmailto:devel@edk2.groups.io>>; Ashish Singhal > > <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com<mailto:ashishs > > in...@nvidia.com%3cmailto:ashishsin...@nvidia.com>>>; Laszlo Ersek > > <ler...@redhat.com<mailto:ler...@redhat.com<mailto:ler...@redhat.com%3 > > cmailto:ler...@redhat.com>>>; Wang, Jian J > > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com<mailto:jian.j.wang > > @intel.com%3cmailto:jian.j.w...@intel.com>>>; Wu, Hao A > > <hao.a...@intel.com<mailto:hao.a...@intel.com<mailto:hao.a...@intel.co > > m%3cmailto:hao.a...@intel.com>>>; Gao, Zhichao > > <zhichao....@intel.com<mailto:zhichao....@intel.com<mailto:zhichao.gao > > @intel.com%3cmailto:zhichao....@intel.com>>>; Kinney, Michael D > > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com<mailto:m > > ichael.d.kin...@intel.com%3cmailto:michael.d.kin...@intel.com>>> > > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM > > enumeration > > > > The issue is there are some auto created options we do not want on our > > platform. > > Get Outlook for > > Android<https://urldefense.proofpoint.com/v2/url?u=https-3A__aka.ms_gh > > ei36&d=DwIF-g&c=C5b8zRQO1miGmBeVZ2LFWg&r=Z9cLgEMdGZCI1_R0bW6KqOAGzCXLJ > > UR24f8N3205AYw&m=EzQH7xR5u0kejdb3Oa18jqGGrV5AO_ROvd_Y_ajQQMk&s=yaH1ZcO > > LL9iVBCGMBGKtuwgPVbblPxtJooJMnpxn8P0&e= > > > > > ________________________________ > > From: Ni, Ray > > <ray...@intel.com<mailto:ray...@intel.com<mailto:ray...@intel.com%3cma > > ilto:ray...@intel.com>>> > > Sent: Wednesday, November 6, 2019 11:59:31 PM > > To: Jeff Brasen > > <jbra...@nvidia.com<mailto:jbra...@nvidia.com<mailto:jbra...@nvidia.co > > m%3cmailto:jbra...@nvidia.com>>>; > > af...@apple.com<mailto:af...@apple.com> > > <af...@apple.com<mailto:af...@apple.com<mailto:af...@apple.com%3cmailt > > o:af...@apple.com>>> > > Cc: > > devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gro > > ups.io%3cmailto:devel@edk2.groups.io>> > > <devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gr > > oups.io%3cmailto:devel@edk2.groups.io>>>; Ashish Singhal > > <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com<mailto:ashishs > > in...@nvidia.com%3cmailto:ashishsin...@nvidia.com>>>; Laszlo Ersek > > <ler...@redhat.com<mailto:ler...@redhat.com<mailto:ler...@redhat.com%3 > > cmailto:ler...@redhat.com>>>; Wang, Jian J > > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com<mailto:jian.j.wang > > @intel.com%3cmailto:jian.j.w...@intel.com>>>; Wu, Hao A > > <hao.a...@intel.com<mailto:hao.a...@intel.com<mailto:hao.a...@intel.co > > m%3cmailto:hao.a...@intel.com>>>; Gao, Zhichao > > <zhichao....@intel.com<mailto:zhichao....@intel.com<mailto:zhichao.gao > > @intel.com%3cmailto:zhichao....@intel.com>>>; Kinney, Michael D > > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com<mailto:m > > ichael.d.kin...@intel.com%3cmailto:michael.d.kin...@intel.com>>> > > Subject: RE: [edk2-devel] [PATCH] Support skipping automatic BM > > enumeration > > > > > > Jeff, > > > > RefreshAllBootOption() only modifies/creates the auto-created boot options. > > For the boot options created by platform > boot manager library, they stay with no one touches. And all auto-created > boot options are appended in the end of boot > option list (through BootOrder). > > > > > > > > From: Jeff Brasen > > <jbra...@nvidia.com<mailto:jbra...@nvidia.com<mailto:jbra...@nvidia.co > > m%3cmailto:jbra...@nvidia.com>>> > > Sent: Thursday, November 7, 2019 12:13 PM > > To: af...@apple.com<mailto:af...@apple.com>; Ni, Ray > > <ray...@intel.com<mailto:ray...@intel.com<mailto:ray...@intel.com%3cma > > ilto:ray...@intel.com>>> > > Cc: > > devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gro > > ups.io%3cmailto:devel@edk2.groups.io>>; Ashish Singhal > > <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com<mailto:ashishs > > in...@nvidia.com%3cmailto:ashishsin...@nvidia.com>>>; Laszlo Ersek > > <ler...@redhat.com<mailto:ler...@redhat.com<mailto:ler...@redhat.com%3 > > cmailto:ler...@redhat.com>>>; Wang, Jian J > > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com<mailto:jian.j.wang > > @intel.com%3cmailto:jian.j.w...@intel.com>>>; Wu, Hao A > > <hao.a...@intel.com<mailto:hao.a...@intel.com<mailto:hao.a...@intel.co > > m%3cmailto:hao.a...@intel.com>>>; Gao, Zhichao > > <zhichao....@intel.com<mailto:zhichao....@intel.com<mailto:zhichao.gao > > @intel.com%3cmailto:zhichao....@intel.com>>>; Kinney, Michael D > > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com<mailto:m > > ichael.d.kin...@intel.com%3cmailto:michael.d.kin...@intel.com>>> > > Subject: RE: [edk2-devel] [PATCH] Support skipping automatic BM > > enumeration > > > > > > > > As the suggestions below made sense, we updated our platform boot manager > > library to behave in this manner and for > normal boots everything works well. However the UiApp and boot maintenance > applications in EDK2 also call > EfiBootManagerRefreshAllBootOption() when ever a user goes into the menu > which will re-create the skipped boot options > with no place for the platform code to intervene. > > > > > > > > What about a solution where we add a new Platform library function that > > allows for override of the behavior of > BmEnumerateBootOptions? For example, either a function or protocol that takes > the same parameters as this function > and only if it returns NULL then we continue to the default enumeration code. > Or a function call inserted at the end that > would modify the load option array after the system does the standard > enumeration. > > > > > > > > -Jeff > > > > > > > > From: af...@apple.com<mailto:af...@apple.com> > > <af...@apple.com<mailto:af...@apple.com<mailto:af...@apple.com%3cmailt > > o:af...@apple.com>>> > > Sent: Wednesday, November 6, 2019 9:20 AM > > To: Ni, Ray > > <ray...@intel.com<mailto:ray...@intel.com<mailto:ray...@intel.com%3cma > > ilto:ray...@intel.com>>> > > Cc: > > devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gro > > ups.io%3cmailto:devel@edk2.groups.io>>; Jeff Brasen > > <jbra...@nvidia.com<mailto:jbra...@nvidia.com<mailto:jbra...@nvidia.co > > m%3cmailto:jbra...@nvidia.com>>>; Ashish Singhal > > <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com<mailto:ashishs > > in...@nvidia.com%3cmailto:ashishsin...@nvidia.com>>>; Laszlo Ersek > > <ler...@redhat.com<mailto:ler...@redhat.com<mailto:ler...@redhat.com%3 > > cmailto:ler...@redhat.com>>>; Wang, Jian J > > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com<mailto:jian.j.wang > > @intel.com%3cmailto:jian.j.w...@intel.com>>>; Wu, Hao A > > <hao.a...@intel.com<mailto:hao.a...@intel.com<mailto:hao.a...@intel.co > > m%3cmailto:hao.a...@intel.com>>>; Gao, Zhichao > > <zhichao....@intel.com<mailto:zhichao....@intel.com<mailto:zhichao.gao > > @intel.com%3cmailto:zhichao....@intel.com>>>; Mike Kinney > > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com<mailto:m > > ichael.d.kin...@intel.com%3cmailto:michael.d.kin...@intel.com>>> > > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM > > enumeration > > > > > > > > Ray, > > > > > > > > Is there an obvious hook point we could point Jeff and Ashish at? > > > > > > > > Long term it would be a good idea to have a Wiki page to give some guidance > > on how to customize the BDS. > > > > > > > > Thanks, > > > > > > > > Andrew Fish > > > > > > > > On Nov 5, 2019, at 9:20 PM, Ni, Ray > <ray...@intel.com<mailto:ray...@intel.com<mailto:ray...@intel.com%3cmailto:ray...@intel.com>>> > wrote: > > > > > > > > Andrew, > > > > I agree with your opinion. > > > > It's expected that Platform Boot Manager lib calls > > EfiBootManagerRefreshAllBootOption() only in full configuration boot > path. > > > > The full configuration boot path is chosen when hardware changes > > happen. So it's not expected EfiBootManagerRefresh...() be called in every > > boot. > > > > So you could: > > > > 1. Delete the auto-created option pointing to LoadFile instance > > 2. Create your own one with customized description. > > > > > > > > > > > > From: af...@apple.com<mailto:af...@apple.com> > > <af...@apple.com<mailto:af...@apple.com<mailto:af...@apple.com%3cmailt > > o:af...@apple.com>>> > > Sent: Wednesday, November 6, 2019 10:47 AM > > To: > > devel@edk2.groups.io<mailto:devel@edk2.groups.io<mailto:de...@edk2.gro > > ups.io%3cmailto:devel@edk2.groups.io>>; > > jbra...@nvidia.com<mailto:jbra...@nvidia.com> > > Cc: Ashish Singhal > > <ashishsin...@nvidia.com<mailto:ashishsin...@nvidia.com<mailto:ashishs > > in...@nvidia.com%3cmailto:ashishsin...@nvidia.com>>>; Laszlo Ersek > > <ler...@redhat.com<mailto:ler...@redhat.com<mailto:ler...@redhat.com%3 > > cmailto:ler...@redhat.com>>>; Ni, Ray > > <ray...@intel.com<mailto:ray...@intel.com<mailto:ray...@intel.com%3cma > > ilto:ray...@intel.com>>>; Wang, Jian J > > <jian.j.w...@intel.com<mailto:jian.j.w...@intel.com<mailto:jian.j.wang > > @intel.com%3cmailto:jian.j.w...@intel.com>>>; Wu, Hao A > > <hao.a...@intel.com<mailto:hao.a...@intel.com<mailto:hao.a...@intel.co > > m%3cmailto:hao.a...@intel.com>>>; Gao, Zhichao > > <zhichao....@intel.com<mailto:zhichao....@intel.com<mailto:zhichao.gao > > @intel.com%3cmailto:zhichao....@intel.com>>>; Kinney, Michael D > > <michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com<mailto:m > > ichael.d.kin...@intel.com%3cmailto:michael.d.kin...@intel.com>>> > > Subject: Re: [edk2-devel] [PATCH] Support skipping automatic BM > > enumeration > > > > > > > > > > > > > > > > On Nov 5, 2019, at 7:34 PM, Jeff Brasen > <jbra...@nvidia.com<mailto:jbra...@nvidia.com<mailto:jbra...@nvidia.com%3cmailto:jbra...@nvidia.com>>> > wrote: > > > > > > > > Wouldn't having a variable that we create and delete on every boot put > > unnecessary stress on the SPI-NOR that the > variable store lives on? > > What about the alternative approach where we allow the platform code to > > modify the attributes of the auto created > variable to disable it with hidden/!active but still match for detection > purposes so that it doesn't delete and recreate the > modified variable each boot? That way all the logic on what to disable can > still be in the platform code and all the existing > logic in the boot manager can stay basically the same? > > > > What changes every boot that forces the variable to need to get modified? > > > > I would assume the NOR driver is smart enough to not update a variable that > > is not changing. > > > > The custom BDS could could only create the variable for this device if it > > does not exist. > > > > [JB] The current flow with no changes in the boot manager would be as > > follows > > > > > > > > 1. Scan for instance of the boot option in the variables > > 2. It will not be found, so create a new boot option store it to a > > variable and update BootOrder > > 3. Platform code runs creates the options for the boot option it wants > > and writes those to variable store > > 4. Delete/disable the boot option in the variable store > > > > > > > > When you reboot it won't find the variable so 1/2/4 will re-occur > > > > > > > > The code that does this (1/2) is EfiBootManagerRefreshAllBootOption in > > BmBoot.c > > > > > > > > If you modify the variable to disable it with hidden/not active it would > > delete that and create a new one as well as the > code wouldn't recognize that is the same boot option. > > > > > > > > If however we modify EfiBootManagerFindLoadOption to not compare the > > attributes (at least allow for differences in > active and hidden) then the when it refreshes every thing it would see the > match and not delete/create a new variable in > the store and thus we wouldn't have changes every boot. > > > > > > > > > > > > Jeff, > > > > > > > > Sorry if I'm a little off on the sequence of things as the platform I work > > on day to day has a custom BDS and does not use > this library..... I though the patch changed BmEnumerateBootOptions(), so > that is going to change how > EfiBootManagerRefreshAllBootOption() works. I'd also point out the patch as > given is invalid as it changed the behavior of > the public library API for EfiBootManagerRefreshAllBootOption() [1] so for > the patch to be valid it would need to change > the comments to reflect the new behavior. This is kind of what Laszlo's > technical debt comment was about. > > > > > > > > I think Laszlo advocated having the BDS platform specific code make sure > > the boot variables are in the correct state. That > should happen before the Boot Manager code runs, and it is not clear to me > why the Boot Manager could would need to > run if you have a valid EFI nvram variable to boot from. > > > > > > > > I think the question is how is your use case different than the boot > > variable that Windows installs? If it works kind of the > same way then the answer is to have the BDS platform specific code write the > boot variable. > > > > > > > > > > > > [1] > > > > /** > > > > The function creates boot options for all possible bootable medias in the > > following order: > > > > 1. Removable BlockIo - The boot option only points to the > > removable media > > > > device, like USB key, DVD, Floppy etc. > > > > 2. Fixed BlockIo - The boot option only points to a Fixed > > blockIo device, > > > > like HardDisk. > > > > 3. Non-BlockIo SimpleFileSystem - The boot option points to a device > > supporting > > > > SimpleFileSystem Protocol, but not > > supporting BlockIo > > > > protocol. > > > > 4. LoadFile - The boot option points to the media > > supporting > > > > LoadFile protocol. > > > > Reference: UEFI Spec chapter 3.3 Boot Option Variables Default Boot > > Behavior > > > > > > > > The function won't delete the boot option not added by itself. > > > > **/ > > > > VOID > > > > EFIAPI > > > > EfiBootManagerRefreshAllBootOption ( > > > > VOID > > > > ); > > > > > > > > Thanks, > > > > > > > > Andrew Fish > > > > > > > > Thanks, > > > > Andrew Fish > > > > Thanks, > > > > Jeff > > > > ________________________________ > > > > This email message is for the sole use of the intended recipient(s) and may > > contain confidential information. Any > unauthorized review, use, disclosure or distribution is prohibited. If you > are not the intended recipient, please contact the > sender by reply email and destroy all copies of the original message. > > > > ________________________________ > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#52339): https://edk2.groups.io/g/devel/message/52339 Mute This Topic: https://groups.io/mt/68782760/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-