Extensible Firmware Interface Specification
12-98 12/01/02 Version 1.10
Table 12-17. EFI PCI Expansion ROM Header
Offset
Byte
Length Value Description
0x00 1 0x55 ROM Signature, byte 1
0x01 1 0xAA ROM Signature, byte 2
0x02 2 XXXX Initialization Size – size of this image in units of 512 bytes. The size
includes this header.
0x04 4 0x0EF1 Signature from EFI image header
0x08 2 XX Subsystem value for EFI image header
0x0a 2 XX Machine type from EFI image header
0x0c 2 XX Compression type
0x0000 - The image is uncompressed
0x0001 - The image is compressed. See the
EFI 1.1 Compression Algorithm Specification.
0x0002 - 0xFFFF - Reserved
0x0e 8 0x00 Reserved
0x16 2 XX Offset to EFI Image
0x18 2 XX Offset to PCIR Data Structure
12.4.2.1 PCI Bus Driver Responsibilities
A PCI Bus Driver must scan a PCI Option ROM for PCI Device Drivers. If a PCI Option ROM is
found during PCI Enumeration, then a copy of the PCI Option ROM is placed in a memory buffer.
The PCI Bus Driver will use the memory copy of the PCI Option ROM to search for EFI Drivers
after PCI Enumeration. The PCI Bus Driver will search the list of images in a PCI Option ROM for
the ones that have a Code Type of 0x03 in the PCIR Data Structure, and a Signature of 0xEF1 in
the EFI PCI Expansion ROM Header. Then, it will examine the Subsystem Type of the EFI PCI
Expansion ROM Header. If the Subsystem Type is IMAGE_SUBSYSTEM_EFI_BOOT_
SERVICE_DRIVER(11) or IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER(12), then the PCI
Bus Driver can load the PCI Device Driver from the PCI Option ROM. The Offset to EFI Image
Header field of the EFI PCI Expansion ROM Header is used to get a pointer to the beginning of the
PE/COFF image in the PCI Option ROM. The PE/COFF image may have been compressed using
the EFI 1.10 Compression Algorithm. If it has been compressed, then the PCI Bus Driver must
decompress the driver to a memory buffer. The Boot Service LoadImage()
canthenbeusedto
load the EFI Driver. If the platform does not support the Machine Type of the EFI Driver, then
LoadImage() may fail. For example, an EFI Driver with an Itanium processor of type of 0x200
wouldfailtoloadonanIA-32platform. IfLoadImage() succeeds, then the Boot Service
StartImage()
can be called to start the PCI Device Driver. The Image Length field of the
PCIR Data Structure can be used to get to the next image in the PCI Option ROM. The PCI Option
ROM search is completed when an image is found whose Indicator field of the PCIR Data Structure
has bit 7 set.