From a363907bc91088f87a303d6aefbd26ba18f26e36 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 95d185b639..e801fa80a7 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -2116,12 +2116,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 @@ -2160,6 +2162,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),