summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaszlo Ersek <lersek@redhat.com>2019-10-11 23:43:37 +0800
committerLiming Gao <liming.gao@intel.com>2019-10-15 08:02:17 +0800
commit4d05a4b709ce52d4649698f887a1358246fa4437 (patch)
tree6329dda3f6d72db00e8ec3b86c206fdda713b78a
parenta1f94045ffe9218ec438c4d23980de4243d21cd0 (diff)
downloadedk2-4d05a4b709ce52d4649698f887a1358246fa4437.tar.gz
edk2-4d05a4b709ce52d4649698f887a1358246fa4437.tar.bz2
edk2-4d05a4b709ce52d4649698f887a1358246fa4437.zip
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 <pete@akeo.ie> Reviewed-by: Liming Gao <liming.gao@intel.com>
-rw-r--r--MdeModulePkg/Universal/BdsDxe/BdsEntry.c12
1 files changed, 11 insertions, 1 deletions
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"));
}