Dear EDK2 community members,

Recently, I have gained interest in the Intel FSP and have been reading the 
Intel documents regarding its design and integration with EDK2.
In the white paper 'A Tour Beyond BIOS Using the Intel(r) Firmware Support 
Package with the EFI Developer Kit II', the chapter 'FSP Wrapper Boot Flow' 
mentions different ways of how SecCore and following can interact with FSP. 
This, in my opinion, implies that SecCore is present in source-form (likely 
IntelFspWrapperPkg/FspWrapperSecCore), while the actual silicon initialization 
is of course within the FSP binary. This is how I understood it and thought it 
made sense.
However, when I opened a few of the FSP Firmware Volume files, I discovered 
that it did not only have the FSP header and initialization PEIMs/drivers, but 
also SecCore, PeiCore and FspDxeIpl embedded. For what reason are these generic 
modules embedded? Until discovering them within the image, I had assumed these 
would be provided by the consumer package.
To better understand the creation and consumption of Intel FSP, I have looked 
at Quark and Braswell Reference Codes provided within the edk2-platforms tree. 
BraswellPlatformPkg, which consumes BSWFSP.fd that has SecCore embedded, also 
consumes FspWrapperSecCore (seen here: 
https://github.com/tianocore/edk2-platforms/blob/pentium-celeron-n-udk2015/BraswellPlatformPkg/PlatformPkg.fdf#L387)
 from the source tree. If I am not mistaken, building it would end up having 
SecCore duplicated - once as part of the FSP volume (binary) and once within 
the FVRECOVERY volume (source). As SecCore includes the Reset Vector, wouldn't 
one of the two be obsolete as it would never be invoked? The same applies to 
PeiCore and a few other generic modules which are part oft he chain.

Furthermore, a couple of modules that have 'Dxe' in their name are declared as 
PEI module in their FFS header, for example 'PchInitDxeFsp'. I have observed 
this in all FSP version I have looked at, including Braswell, Broadwell and Ivy 
Bridge. Is there any special reason for that? Is it because the FSP 
initialization code is what has them loaded and called, so it doesn't matter?

Please forgive me for my ignorance and thank you in advance for your time!

Best regards,
Marvin.
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to