diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c index 7968a58f34..d6ec31118c 100644 --- a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c +++ b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c @@ -341,7 +341,17 @@ BdsWait ( TimeoutRemain--; } } - PlatformBootManagerWaitCallback (0); + + // + // If the platform configured a nonzero and finite time-out, and we have + // actually reached that, report 100% completion to the platform. + // + // Note that the (TimeoutRemain == 0) condition excludes + // PcdPlatformBootTimeOut=0xFFFF, and that's deliberate. + // + if (PcdGet16 (PcdPlatformBootTimeOut) != 0 && TimeoutRemain == 0) { + PlatformBootManagerWaitCallback (0); + } DEBUG ((EFI_D_INFO, "[Bds]Exit the waiting!\n")); }