diff options
author | Laszlo Ersek <lersek@redhat.com> | 2019-10-11 23:43:37 +0800 |
---|---|---|
committer | Liming Gao <liming.gao@intel.com> | 2019-10-15 08:02:17 +0800 |
commit | 4d05a4b709ce52d4649698f887a1358246fa4437 (patch) | |
tree | 6329dda3f6d72db00e8ec3b86c206fdda713b78a /MdeModulePkg/Universal | |
parent | a1f94045ffe9218ec438c4d23980de4243d21cd0 (diff) | |
download | edk2-4d05a4b709ce52d4649698f887a1358246fa4437.zip edk2-4d05a4b709ce52d4649698f887a1358246fa4437.tar.gz edk2-4d05a4b709ce52d4649698f887a1358246fa4437.tar.bz2 |
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>
Diffstat (limited to 'MdeModulePkg/Universal')
-rw-r--r-- | MdeModulePkg/Universal/BdsDxe/BdsEntry.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c index 7968a58..d6ec311 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"));
}
|