1 pci bus driver responsibilities – Intel Extensible Firmware Interface User Manual

Page 516

Advertising
background image

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()

can then b e used to

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

would fail to load on an IA-32 platform. If

LoadImage()

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.

Advertising