Extensible Firmware Interface Specification overview

This page contains EFI specification information for EFI 1.10 and EFI 1.02 Specifications only and these specifications are still available for download from this site. However, the latest specification for EFI has been merged with the UEFI specification and members can download these specifications from the Unified Extensible Firmware Interface (UEFI) web site.

EFI Specification - background

The EFI 1.10 Specification is a merging of documents of the 1.02 specification and the EFI Driver Model along with additional protocol interfaces that provide access to a richer set of boot devices. The additional protocol interfaces are included to support replacement of legacy option ROMs on add-in cards by EFI drivers that may use or produce those interfaces.

The EFI Driver Model is designed to extend the EFI specification in a way that supports device drivers and bus drivers. These extensions are provided in the form of new protocols, new boot services, and updated EFI boot services that are backward compatible with their original versions.

The EFI Driver Model is designed to be generic and can be adapted to any type of bus or device. Also included in the EFI 1.10 Specification is a set of companion documents that describe how to write PCI bus drivers and PCI device drivers. These companion documents also describe how to store an EFI driver in a PCI option ROM while maintaining compatibility with legacy option ROM images. The EFI Driver may be compiled for EFI Byte Code to enable a single image to support multiple platforms, including IA-32 and ItaniumŪ-based platforms. In addition the EFI Driver may be compressed to minimize the image size.

The EFI 1.10 Specification is designed to be backward compatible with the EFI 1.02 Specification. This means that any EFI application or driver binaries that are compiled to the EFI 1.02 Specification will continue to function on system firmware that complies with the EFI 1.10 Specification.

You may download the EFI Specification version 1.10, download a document outlining the changes between the draft 0.95 and the final version, or access related specifications. Please choose from the following:

Items included in the specification

EFI 1.02 merge The EFI 1.02 Specification was merged into the EFI 1.10 Specification. The specification has been reorganized to put the relevant protocols together in the same chapters.
EFI driver model Describes a generic driver model for EFI. This includes the set of services and protocols that apply to every bus and device type. There are companion specifications for specific bus and device types.
USB host controller protocol Describes a USB host controller protocol that abstracts accesses to the host controller.
USB driver model The USB driver model provides a Bus driver interface and a Device driver interface.
Universal graphics adapter protocol Protocol that describes services for video card device control and primitive graphical drawing capability for the preboot environment.
EFI driver model Describes a generic driver model for EFI. This includes the set of services and protocols that apply to every bus and device type. There are companion specifications for specific bus and device types.
PCI Root Bridge I/O Protocol Defines the PCI Root Bridge I/O Protocol that abstracts I/O accesses through a PCI Root Bridge. This is intended to be the replacement for the Device I/O Protocol for EFI drivers that follow the EFI Driver Model. In addition, it describes how this protocol can be used to provide a software abstraction for a platform with multiple PCI root bridges and/or multiple PCI segments.
PCI driver model Defines the responsibilities of PCI Bus Drivers and PCI Device Drivers.
SCSI pass thru protocol A protocol that is used to abstract access to a SCSI channel. This protocol allows SCSI commands to be sent directly to a SCSI channel.
Simple pointer protocol A protocol that abstracts pointer devices such as mice and trackballs.
Boot integrity services protocol An optional protocol that provides security and authentication services in the pre-boot environment.
EFI debugger support A set of protocols that provide the services required to implement a source level debugger for the EFI environment. The EFI Debug Port Protocol provides services to communicate with a remote debug host. The Debug Support Protocol provides services to hook processor exceptions and to save and restore the processor context.
Compression algorithm Describes in detail the EFI compression/decompression algorithm, as well as the EFI Decompress Protocol. The EFI Decompress Protocol provides a standard decompression interface for use at boot time. The EFI Decompress Protocol is used by a PCI Bus Driver to decompress EFI drivers stored in PCI Option ROMs. The compression support reduces the space required to store EFI images.
The following EFI Byte Code (EBC) document is intended for people interested in implementing an EBC interpreter, an EBC compiler or an EBC linker.
EFI Byte Code virtual machine Defines the EFI Byte Code virtual processor, its instruction set, how EBC object files are loaded into memory, and the mechanism for transitioning from native code to EBC code and back to native code.

For more information about the documents contents, please see the EFI 1.10 Overview and the documents themselves.

back to top