diff --git a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c index 6778b2d3e3..5e8d5b8e77 100644 --- a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c +++ b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c @@ -2109,7 +2109,10 @@ PeiDispatcher ( // pass. If we did not dispatch a PEIM/FV there is no point in trying again // as it will fail the next time too (nothing has changed). // - } while (Private->PeimNeedingDispatch && Private->PeimDispatchOnThisPass); + // Also continue dispatch loop if there are outstanding delay- + // dispatch registrations still running. + } while ((Private->PeimNeedingDispatch && Private->PeimDispatchOnThisPass) || + (Private->DelayedDispatchTable->Count > 0)); } /**