From 4d05a4b709ce52d4649698f887a1358246fa4437 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Fri, 11 Oct 2019 23:43:37 +0800 Subject: [PATCH] MdeModulePkg/BdsDxe: Fix calling PlatformBootManagerWaitCallback on 0 Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2266 Commit 2de1f611be06ded3a59726a4052a9039be7d459b introduced a regression whereas platforms that did set PcdPlatformBootTimeOut to 0 are now getting an unexpected call to PlatformBootManagerWaitCallback(). This patch also ensures that, if PcdPlatformBootTimeOut is 0xFFFF we don't call PlatformBootManagerWaitCallback() with a zero argument as doing so would produce an unwarranted jump to full progress completion which is likely to throw off users. Signed-off-by: Pete Batard Reviewed-by: Liming Gao --- MdeModulePkg/Universal/BdsDxe/BdsEntry.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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")); }