2 system abstraction requirements, 3 firmware to os hand-off – Intel Extensible Firmware Interface User Manual
Page 338
Extensible Firmware Interface Specification
10-44
12/01/02
Version 1.10
10.9.2 System
Abstraction
Requirements
The system must support the loading of an EFI 1.10 image. The system must support the EBC
image type, and it may optionally support native images. When an EFI 1.10 driver is started it is
passed a pointer to the EFI 1.10 System Table, and an EFI Image Handle for the loaded image.
Thus the system must support the EFI system table and its associated runtime and boot services.
For PCI or AGP devices the system must produce a PCI_IO protocol on a handle for every UGA
device that can be supported.
The system will follow the following sequence of events to bind an EFI UGA driver to a
hardware device:
1. Initialize the EFI firmware or VM.
2. Create handles and PCI_IO protocols to abstract the supported devices.
3. Load the EFI 1.10 UGA drivers (drivers register Driver Binding Protocol but do not
touch hardware).
4. Bind the EFI 1.10 UGA driver to the hardware device. EFI firmware or VM uses
gBS->ConnectController()
to bind driver handle to the PCI_IO device handle.
5. UGA protocols are now available for use.
10.9.3 Firmware to OS Hand-off
The system firmware must hand off to the OS the devices to which EFI 1.10 ROMs should be
bound. The EFI firmware must create entries in the Configuration Table of the EFI System Table.
The Configuration Table entry for EFI 1.10 UGA ROMs will contain the
EFI_UGA_IO_PROTOCOL_GUID
and a pointer to the
EFI_DRIVER_OS_HANDOFF_HEADER
(See “Related Definitions” below.) The
EFI_DRIVER_OS_HANDOFF_HEADER
describes a list
of
EFI_DRIVER_OS_HANDOFF
structures that describe to the OS what EFI 1.10 UGA ROMs are
present in the system.
There is an
EFI_DRIVER_OS_HANDOFF
entry for each PCI device that the firmware discovered
that is capable of supporting UGA. There may also be
EFI_DRIVER_OS_HANDOFF
entries for
EFI 1.10 UGA drivers that were not associated with a device. It should be noted that the
PciRomImage
for a device may not contain the
PeImage
that firmware used as an EFI 1.10
UGA driver for the device.
Related Definitions
typedef struct {
UINT32
Version;
UINT32
HeaderSize;
UINT32
SizeOfEntries;
UINT32
NumberOfEntries;
} EFI_DRIVER_OS_HANDOFF_HEADER;