Sean, Can you use EfiBootManagerSortLoadOptionVariable() to sort the boot options from PlatformBootManagerLib?
> -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sean Rhodes > Sent: Monday, March 21, 2022 6:04 PM > To: devel@edk2.groups.io > Cc: Matt DeVillier <matt.devill...@gmail.com>; Wang, Jian J > <jian.j.w...@intel.com>; Gao, Liming > <gaolim...@byosoft.com.cn>; Rhodes, Sean <sean@starlabs.systems> > Subject: [edk2-devel] [PATCH 1/2] MdeModulePkg/UefiBootManagerLib: Add Pcd to > prioritize internal devices > > From: Matt DeVillier <matt.devill...@gmail.com> > > Add Pcd to allow configuring internal devices to be prioritized over > internally-attached USB devices, such as card readers, over SATA, NVMe > and eMMC drives. > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Signed-off-by: Matt DeVillier <matt.devill...@gmail.com> > Signed-off-by: Sean Rhodes <sean@starlabs.systems> > --- > MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 10 ++++++++-- > .../Library/UefiBootManagerLib/UefiBootManagerLib.inf | 1 + > MdeModulePkg/MdeModulePkg.dec | 4 ++++ > MdeModulePkg/MdeModulePkg.uni | 4 ++++ > 4 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c > b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c > index 962892d38f..28c3cff471 100644 > --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c > +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c > @@ -2214,8 +2214,14 @@ BmEnumerateBootOptions ( > // > > // Skip the fixed block io then the removable block io > > // > > - if (BlkIo->Media->RemovableMedia == ((Removable == 0) ? FALSE : TRUE)) > { > > - continue; > > + if (FixedPcdGetBool (PcdPrioritizeInternal)) { > > + if (BlkIo->Media->RemovableMedia == (Removable == 0)) { > > + continue; > > + } > > + } else { > > + if (BlkIo->Media->RemovableMedia == ((Removable == 0) ? FALSE : > TRUE)) { > > + continue; > > + } > > } > > > > Description = BmGetBootDescription (Handles[Index]); > > diff --git a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > index fe05d5f1cc..207420e334 100644 > --- a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > +++ b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > @@ -119,3 +119,4 @@ > gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile > ## CONSUMES > > gEfiMdeModulePkgTokenSpaceGuid.PcdDriverHealthConfigureForm > ## SOMETIMES_CONSUMES > > gEfiMdeModulePkgTokenSpaceGuid.PcdMaxRepairCount > ## CONSUMES > > + gEfiMdeModulePkgTokenSpaceGuid.PcdPrioritizeInternal > > diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec > index 40601c9583..8b8b1f7033 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -1563,6 +1563,10 @@ > # @Prompt SD/MMC Host Controller Operations Timeout (us). > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSdMmcGenericTimeoutValue|1000000|UINT32|0x00000031 > > > > + ## Inditicates if internal devices will be prioritized over external > devices. > > + # @prompt Prioritize internal devices. > > + > gEfiMdeModulePkgTokenSpaceGuid.PcdPrioritizeInternal|FALSE|BOOLEAN|0x00000032 > > + > > [PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] > > ## This PCD defines the Console output row. The default value is 25 > according to UEFI spec. > > # This PCD could be set to 0 then console output would be at max column > and max row. > > diff --git a/MdeModulePkg/MdeModulePkg.uni b/MdeModulePkg/MdeModulePkg.uni > index b070f15ff2..7b8606f091 100644 > --- a/MdeModulePkg/MdeModulePkg.uni > +++ b/MdeModulePkg/MdeModulePkg.uni > @@ -1177,6 +1177,10 @@ > > > #string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSdMmcGenericTimeoutValue_HELP > #language en-US "Indicates the > default timeout value for SD/MMC Host Controller operations in microseconds." > > > > +#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPrioritizeInternal_PROMPT > #language en-US "Enable booting from > internal devices before external devices." > > + > > +#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPrioritizeInternal_HELP > #language en-US "Indicates the if internal > devices will be prioritized in boot order." > > + > > #string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCodRelocationDevPath_PROMPT > #language en-US "Capsule On Disk > relocation device path." > > > > #string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCodRelocationDevPath_HELP > #language en-US "Full device path of > platform specific device to store Capsule On Disk temp relocation file.<BR>" > > -- > 2.32.0 > > > > -=-=-=-=-=-= > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#87789): https://edk2.groups.io/g/devel/message/87789 > Mute This Topic: https://groups.io/mt/89924426/1712937 > Group Owner: devel+ow...@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray...@intel.com] > -=-=-=-=-=-= > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#89823): https://edk2.groups.io/g/devel/message/89823 Mute This Topic: https://groups.io/mt/89924426/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-