The PI specification was created by UEFI to provide the underpinnings to a UEFI implementation. It is not required by the UEFI specification (that is, you can implement UEFI without reference to the PI), but it is useful for those of us who put together platform firmware on a regular basis.
PI 1.0 brought in the basics: how are things organized in the flash, how do pre-UEFI drivers get launched, how are services they produced and consumed and how are the hardware devices required for the UEFI boot/runtime services abstracted.
PI 1.1 added explicit support for some other items which are mentioned but not standardized in the UEFI specification (PCI host buses, PCI hot plug, SMBIOS) and items which make platforms go, but don't aren't in UEFI (SMM, multi-processor support, S3 resume).
- PCI Host Bus. PCI root bridges are discussed in section 13.1 of the UEFI 2.1 specification as part of "PCI Host Bus Controllers". But the PCI Bus driver and its interaction with the PCI Hos Bus Controller is outside the scope of that specification (see section 13.3.2.2). The PI 1.1 specification fills in that gap. This portion is very similar to the Framework specifications.
- PCI Hot Plug. Describes how hot plug controllers, including CardBus and ExpressCard, are initialized and supported when booting a UEFI system. This portion is very similar to the Framework specifications.
- SMBIOS. While UEFI 2.1 described how to discover the SMBIOS table (see section 4.6), but not how it is created. Generally, UEFI drivers and applications are considered to be consumers of the table. However, one or more PI drivers may install content into the SMBIOS table. This portion is different than the Framework specifications, which used the Data Hub facility instead.
- SMM. PI 1.1 introduces a new core interface specification for System Management Mode (SMM). It describes driver dispatch, event handling, memory allocation and protocol production/consumption for drivers executing in System Management RAM (SMRAM). While similar in concept to the Framework specifications, it is substantially altered, including SMRAM management, X64 support and SMI source dispatcher architecture.
- Multi-Processor Support. Both DXE and SMM provide support for calling a function executing on a different processor core or thread.
- S3 Resume. Returning to the operating system after the system has entered an S3 suspend state (memory preserved, hardware state lost) is always tricky. Many devices are restored by the operating system, but many motherboard devices require special attention. PI 1.1 introduces the boot script, which is a list of hardware-level commands to be replayed during a resume from S3. The commands are encoded as opcodes with optional data in the script. This section of the PI 1.1 specification is similar in concept to that found in the Framework specifications, but is altered to support additional operations as well as initialization dependencies.
The PI 1.1 specification brings the Platform Initialization specification a long way towards fully supporting a production UEFI system. There are still a few areas which need to be covered and these are under consideration for the PI 1.2 specification, I am sure.
Tim



Comments