On Oct 3, 2012, at 8:53 AM, Tim Lewis wrote:
> The dispatcher will dispatch all modules listed in the Apriori to the head of
> the dispatching queue.
>
> I believe that the order of modules in the FDF itself has no guarantee with
> regard to execution order. Based on module alignment, for example, modules
> listed later may be fitted earlier in the actual generated firmware volume.
> The FDF merely guarantees that they will be placed in the firmware volume.
> And, of course, the dispatcher may choose any order it wishes to process
> modules in the FV.
>
> A more reliable way of guaranteeing execution order is dependency expressions
> (it is more plug-and-play) and, in necessity, apriori.
>
As Tim points out you are better off using dependency expressions, but if a set
of dependency expressions all evaluate to true then the order of dispatch is
not defined in the PI spec. So in the example in the mail it looks like the
author wanted the status code drivers to run as early as possible so that DEBUG
prints would come out as early as possible in the boot.
I don't see a reason for the PCD PEIM to be in the apriori file as the
PeiPcdLib depends on the gEfiPeiPcdPpiGuid so dispatch order will always be
correct.
https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
[Depex.common.PEIM]
gEfiPeiPcdPpiGuid
I guess some one thought the PCD services should always be available so lets
load them first.
In general apriori is useful for debugging and logging. In the NT32Pkg example
the DEBUG prints in the PeiCore and early PEIMs will go to the bit bucket until
the report status code infrastructure is loaded, so the Apriori files is used
to force the DEBUG print code to have priority. If you removed the Apriori file
in the NT32Pkg example the system would still boot, but DEBUG prints might turn
on later in the boot flow.
The dispatchers are located here:
https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c
https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c
This is all documented in the PI specifications @ www.uefi.org.
Andrew
> Tim
>
> From: appireddy annapureddy [mailto:appi.am...@gmail.com]
> Sent: Wednesday, October 03, 2012 8:08 AM
> To: edk2-devel@lists.sourceforge.net
> Subject: [edk2] APRIORI Query
>
> Hi All,
>
> I observed that some of the INF files like Pcd.inf,
> ReportStatusCodeRouterPei.inf etc are added in Apriori list as well as in
> regular dispatching list in fdf file .
> what is the importance of adding same INF file twice and How does it affect
> the BIOS boot flow?
>
> Copied from NT32Pkg.fdf:
> APRIORI PEI {
> INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
> INF
> MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
> INF MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
> INF
> Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf
> }
>
> INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
> INF
> MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
> INF MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
> INF
> Nt32Pkg/WinNtOemHookStatusCodeHandlerPei/WinNtOemHookStatusCodeHandlerPei.inf
>
> Please give your comments.
>
>
> Thanks
> Nitin
> ------------------------------------------------------------------------------
> Don't let slow site performance ruin your business. Deploy New Relic APM
> Deploy New Relic app performance management and know exactly
> what is happening inside your Ruby, Python, PHP, Java, and .NET app
> Try New Relic at no cost today and get our sweet Data Nerd shirt too!
> http://p.sf.net/sfu/newrelic-dev2dev_______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel