From 93688ae1e5550a4562902e4260496f7a6605ee1a Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Sat, 4 Apr 2020 16:59:54 -0500 Subject: [PATCH] MdeModulePkg/BmBoot: skip secondary eMMC entries Internal eMMC devices often show multiple entries, so skip any after the initial entry. Signed-off-by: Matt DeVillier --- MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c index 962892d38f..f7da5bcdfc 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -2175,12 +2175,14 @@ BmEnumerateBootOptions ( EFI_BLOCK_IO_PROTOCOL *BlkIo; UINTN Removable; UINTN Index; + UINTN EmmcCount; CHAR16 *Description; ASSERT (BootOptionCount != NULL); *BootOptionCount = 0; BootOptions = NULL; + EmmcCount = 0; // // Parse removable block io followed by fixed block io @@ -2219,6 +2221,17 @@ BmEnumerateBootOptions ( } Description = BmGetBootDescription (Handles[Index]); + + // + // Skip secondary entries for internal eMMC devices + // + if (StrCmp(Description, L"eMMC Device") == 0) { + EmmcCount++; + if (EmmcCount > 1) { + continue; + } + } + BootOptions = ReallocatePool ( sizeof (EFI_BOOT_MANAGER_LOAD_OPTION) * (*BootOptionCount), sizeof (EFI_BOOT_MANAGER_LOAD_OPTION) * (*BootOptionCount + 1),