Intel® FSP External Architecture Specification v2.1 Has Been Released
We are pleased to announce that the FSP External Architecture Specification v2.1 has been posted to https://www.intel.com/fsp!
* Dispatch Mode – A new optional FSP boot mode intended to ease integration of FSP with PI spec compliant firmware implementations. In dispatch mode, FSP-M and FSP-S are containers that expose firmware volumes (FVs) directly to the platform firmware. The PEIMs in these FVs are executed directly in the context of the PEI environment provided by the platform. In dispatch mode, the FspMemoryInit(), FspSiliconInit(), and NotifyPhase() API’s are not used. NotifyPhase() is replaced by FSP-S containing DXE drivers that provide a native implementation of equivalent events for each of the NotifyPhase() invocations.
* More Robust Error Reporting – FSP 2.1 adds the FSP_ERROR_INFO, which provides more granularity on FSP error data and will aid in the debug of error codes returned by PEIMs in FSP. FSP_ERROR_INFO will be provided to the platform firmware as a data payload in a ReportStatusCode() call. Platform can install a listener for this status code. Additionally, debug versions of FSP will use ReportStatusCode() to provide debug messages to the platform code instead of directly writing to the serial port, allowing platform code to implement its own custom methods of outputting debug messages.
* Improved Graphics Support – Starting with FSP 2.1, in addition to the EFI_PEI_GRAPHICS_INFO_HOB, FSP will now also produce the EFI_PEI_GRAPHICS_DEVICE_INFO_HOB. With this change, FSP now produces enough information to create a completely generic implementation of the EFI_GRAPHICS_OUTPUT_PROTOCOL.
* Improved Memory Utilization – Since FSP executes in the same PEI core instance as the rest of the platform code, there is no need for a 2nd copy of PEI core and the associated 2nd stack, PPI database, HOB list, etc. This will also make FSP work better with existing debuggers, as most UEFI aware debuggers do not expect 2 instances of PEI core to exist simultaneously.
AmberLakeFspBinPkg has been released on https://github.com/IntelFsp/FSP, which provides the first implementation of FSP 2.1. This FSP is backward compatible with Kaby Lake, so there should be a good amount of existing hardware available for those who are interested in trying FSP 2.1. Looking forward, our upcoming Ice Lake and Comet Lake platforms will have FSP 2.1 binaries once they are released.
MinPlatform and FSP 2.1 provide a complete and native UEFI firmware implementation and together they are Intel’s preferred method of implementing open source UEFI firmware today. We will be pushing patches to the mailing list that add FSP 2.1 dispatch mode support to KabyLakeOpenBoardPkg in edk2-platforms soon!