The PCI Local Bus Specification defines how to discover expansion ROM code that comes from a
ROM on a PCI Card. The expansion ROM can be executed to initialize a specific device or,
possibly, to boot a system. PCI allows the ROM to contain several different images to
accommodate different machine and processor architectures. This chapter explains how EFI
images can be discovered and executed from a PCI expansion ROM. The EFI images are
discovered using the basic methods outlined in the PCI Local Bus Specification, and then executed
just like any other EFI image. The format and definition of an EFI image in a PCI expansion ROM
are the same as the format and definition of an EFI image that is loaded from a disk or removable
medium.
An EFI PCI expansion ROM can coexist with other image types in a single PCI ROM. The
coexistence of multiple images in a PCI expansion ROM is detailed in the PCI Local Bus
Specification. EFI utilizes a new PCI code type to define a platform-specific PCI Expansion ROM
Header. The EFI expansion ROM header contains information about the image and a pointer to the
start of the image.
18.1 Standard PCI Expansion ROM Header
All PCI expansion ROMs start with the standard header shown in Table 18-1. (The header is
defined in the PCI Local Bus Specification, Revision 2.2). The table contains a simple signature,
0xAA55, and the offset to the PCI Data Structure. The Standard PCI Data Structure must be
located within the first 64 KB of the ROM image and must be aligned on a four byte boundary.
Table 18-1. Standard PCI Expansion ROM Header
Offset
Byte Length
0x00
1
0x01
1
0x02-0x17
22
0x18-0x19
2
Table 18-2 defines the contents of the PCI Data Structure. (The definition is taken from the PCI
Local Bus Specification, Revision 2.2). The code type field is used to identify the type of code
contained in this section of the ROM. The following code types are assigned by the PCI Local Bus
Specification, Revision 2.2:
•
®
0x00 – Intel
IA-32, PC-AT compatible
•
0x01 – Open Firmware standard for PCI
•
0x02 – Hewlett-Packard PA RISC
•
0x03-0xff – Reserved
Version 1.02
Value
Description
0x55
ROM Signature, byte 1
0xAA
ROM Signature, byte 2
XX
Reserved per processor architecture unique data
XX
Pointer to PCI Data Structure
12/12/00
PCI Expansion ROM
18
327
Need help?
Do you have a question about the Extensible Firmware Interface and is the answer not in the manual?