]> git.proxmox.com Git - mirror_edk2.git/commit - MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c
MdeModulePkg PeiCore: PEI dispatcher need retry to process NOT_DISPATCHED FV
authorStar Zeng <star.zeng@intel.com>
Fri, 13 Nov 2015 02:43:37 +0000 (02:43 +0000)
committerlzeng14 <lzeng14@Edk2>
Fri, 13 Nov 2015 02:43:37 +0000 (02:43 +0000)
commit116cd8563cd51a96785936b57b44aa08e217bd9c
treec044e1a71883dc639d03063654c576b766e5e30a
parent9ea2d901879fbbac521df270406f61896aabb545
MdeModulePkg PeiCore: PEI dispatcher need retry to process NOT_DISPATCHED FV

A corner case like below will cause a NOT_DISPATCHED FV has no opportunity to
be dispatched.
  1. FV_RECOVERY has SecCore, PeiCore and some other PEI modules, a module will
    report FVMAIN_COMPACT and FV_RECOVERY2 in sequence.
  2. FVMAIN_COMPACT has a FV image file with GUIDED FV image section in it.
  3. FV_RECOVERY2 has DxeIpl and other PEI modules, the DxeIpl will install
     SectionExtractionPpi
  If ALL the PEIMs in FV_RECOVERY and FV_RECOVERY2 have DEPEX satisfied and
  executed in one loop, PeimNeedingDispatch will be always FALSE, FVMAIN_COMPACT
  will have no opportunity to be decompressed and dispatched as DxeIpl executes
  after the first processing to FVMAIN_COMPACT.

The patch is to set PeimNeedingDispatch to TRUE when ProcessFvFile() not successfully,
then the NOT_DISPATCHED FV could have another opportunity to be processed.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Eugene Cohen <eugene@hp.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18781 6f19259b-4bc3-4df7-8a09-765794883524
MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c