Intel Extensible Firmware Interface User manual

Extensible Firmware Interface
Specification
Version 1.02
December 12, 2000

Extensible Firmware Interface Specification
ii 12/12/00 Version 1.02
THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY
OF MERCHANTABILITY, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING
OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE.
A license is hereby granted to copy and reproduce this specification for internal use only.
No other license, express or implied, by estoppel or otherwise, to any other intellectual property rights is granted herein.
Intel disclaims all liability, including liability for infringement of any proprietary rights, relating to implementation of information
in this specification. Intel does not warrant or represent that such implementation(s) will not infringe such rights.
Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined."
Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising
from future changes to them.
This document contains information on products in the design phase of development. Do not finalize a design with this
information. Revised information will be published when the product is available. Verify with your local sales office that you
have the latest datasheet or specification before finalizing a design.
†Third-party trademarks are the property of their respective owners.
Intel order number 731843-001
Copyright 1998, 1999, 2000 Intel Corporation. All Rights Reserved.

Version 1.02 12/12/00 iii
Revision History
Revision Revision History Date
1.01 Original Issue. 12/01/00
1.02 Update for legal and trademarking requirements. 12/12/00

Extensible Firmware Interface Specification
iv 12/12/00 Version 1.02

Version 1.02 12/12/00 v
Table of Contents
1 Introduction
1.1 Overview.................................................................................................... 2
1.2 Goals ......................................................................................................... 3
1.3 Target Audience ........................................................................................ 5
1.4 Related Information ................................................................................... 6
1.5 Prerequisite Specifications ........................................................................ 8
1.5.1 ACPI Specification............................................................................. 8
1.5.2 WfM Specification.............................................................................. 8
1.5.3 Additional Considerations for Itanium™-based Platforms.................. 9
1.6 EFI Design Overview ................................................................................. 9
1.7 Migration Requirements........................................................................... 11
1.7.1 Legacy Operating System Support.................................................. 11
1.7.2 Supporting the EFI Specification on a Legacy Platform................... 11
1.8 Conventions Used in This Document....................................................... 12
1.8.1 Data Structure Descriptions............................................................. 12
1.8.2 Typographic Conventions................................................................ 12
1.9 Guidelines for Use of the Term “Extensible Firmware Interface”............. 12
2 Overview
2.1 Boot Manager .......................................................................................... 14
2.2 Firmware Core ......................................................................................... 14
2.2.1 EFI Services .................................................................................... 14
2.2.2 Runtime Services ............................................................................ 15
2.3 Calling Conventions................................................................................. 16
2.3.1 Data Types ...................................................................................... 16
2.3.2 IA-32 Platforms................................................................................ 18
2.3.3 Itanium-based Platforms.................................................................. 18
2.4 Protocols.................................................................................................. 19
2.5 Requirements .......................................................................................... 21
2.5.1 Required Elements .......................................................................... 21
2.5.2 Optional Elements ........................................................................... 22
2.5.3 Appendixes...................................................................................... 23

Extensible Firmware Interface Specification
vi 12/12/00 Version 1.02
3 Services
3.1 Event, Timer, and Task Priority Services................................................. 26
3.1.1 CreateEvent() .................................................................................. 29
3.1.2 CloseEvent().................................................................................... 33
3.1.3 SignalEvent() ................................................................................... 34
3.1.4 WaitForEvent() ................................................................................ 35
3.1.5 CheckEvent()................................................................................... 36
3.1.6 SetTimer()........................................................................................ 37
3.1.7 RaiseTPL() ...................................................................................... 39
3.1.8 RestoreTPL() ................................................................................... 41
3.2 Memory Allocation Services .................................................................... 42
3.2.1 AllocatePages() ............................................................................... 45
3.2.2 FreePages()..................................................................................... 48
3.2.3 GetMemoryMap() ............................................................................ 49
3.2.4 AllocatePool() .................................................................................. 53
3.2.5 FreePool()........................................................................................ 54
3.3 Protocol Handler Services ....................................................................... 55
3.3.1 InstallProtocolInterface().................................................................. 57
3.3.2 UninstallProtocolInterface() ............................................................. 59
3.3.3 ReinstallProtocolInterface() ............................................................. 60
3.3.4 RegisterProtocolNotify()................................................................... 61
3.3.5 LocateHandle() ................................................................................ 62
3.3.6 HandleProtocol().............................................................................. 64
3.3.7 LocateDevicePath() ......................................................................... 65
3.4 Image Services........................................................................................ 67
3.4.1 LoadImage() .................................................................................... 69
3.4.2 StartImage()..................................................................................... 71
3.4.3 UnloadImage()................................................................................. 72
3.4.4 EFI_IMAGE_ENTRY_POINT .......................................................... 73
3.4.5 Exit() ................................................................................................ 74
3.4.6 ExitBootServices() ........................................................................... 76

Contents
Version 1.02 12/12/00 vii
3.5 Variable Services..................................................................................... 77
3.5.1 GetVariable() ................................................................................... 78
3.5.2 GetNextVariableName() .................................................................. 80
3.5.3 SetVariable().................................................................................... 82
3.6 Time Services.......................................................................................... 84
3.6.1 GetTime() ........................................................................................ 85
3.6.2 SetTime()......................................................................................... 88
3.6.3 GetWakeupTime() ........................................................................... 89
3.6.4 SetWakeupTime()............................................................................ 90
3.7 Virtual Memory Services.......................................................................... 91
3.7.1 SetVirtualAddressMap()................................................................... 92
3.7.2 ConvertPointer() .............................................................................. 94
3.8 Miscellaneous Services ........................................................................... 95
3.8.1 ResetSystem()................................................................................. 96
3.8.2 SetWatchdogTimer()........................................................................ 98
3.8.3 Stall() ............................................................................................. 100
3.8.4 GetNextMonotonicCount() ............................................................. 101
3.8.5 GetNextHighMonotonicCount()...................................................... 102
3.8.6 InstallConfigurationTable()............................................................. 103
4 EFI Image
4.1 LOADED_IMAGE Protocol .................................................................... 105
4.1.1 LOADED_IMAGE.Unload()............................................................ 108
4.2 EFI Image Header ................................................................................. 109
4.3 EFI Applications..................................................................................... 110
4.4 EFI OS Loaders..................................................................................... 110
4.5 EFI Drivers............................................................................................. 110
4.5.1 EFI Image Handoff State ............................................................... 111
4.5.1.1 IA-32 Handoff State...................................................................... 115
4.5.1.2 Handoff State, Itanium-based Operating Systems ....................... 116
5 Device Path Protocol ....................................................................................117
5.1 Device Path Overview ........................................................................... 117
5.2 EFI_DEVICE_PATH Protocol ................................................................ 118

Extensible Firmware Interface Specification
viii 12/12/00 Version 1.02
5.3 Device Path Nodes................................................................................ 119
5.3.1 Generic Device Path Structures .................................................... 119
5.3.2 Hardware Device Path................................................................... 120
5.3.2.1 PCI Device Path ........................................................................... 121
5.3.2.2 PCCARD Device Path.................................................................. 121
5.3.2.3 Memory Mapped Device Path ...................................................... 122
5.3.2.4 Vendor Device Path ..................................................................... 122
5.3.2.5 Controller Device Path.................................................................. 122
5.3.3 ACPI Device Path.......................................................................... 123
5.3.4 Messaging Device Path................................................................. 123
5.3.4.1 ATAPI Device Path....................................................................... 124
5.3.4.2 SCSI Device Path......................................................................... 124
5.3.4.3 Fibre Channel Device Path........................................................... 124
5.3.4.4 1394 Device Path ......................................................................... 125
5.3.4.5 USB Device Path.......................................................................... 125
5.3.4.6 USB Class Device Path................................................................ 126
5.3.4.7 I2O Device Path ........................................................................... 126
5.3.4.8 MAC Address Device Path........................................................... 126
5.3.4.9 IPv4 Device Path.......................................................................... 127
5.3.4.10 IPv6 Device Path........................................................................ 127
5.3.4.11 InfiniBand†Device Path.............................................................. 128
5.3.4.12 UART Device Path ..................................................................... 128
5.3.4.13 Vendor-Defined Messaging Device Path.................................... 129
5.3.5 Media Device Path ........................................................................ 129
5.3.5.1 Hard Drive .................................................................................... 129
5.3.5.2 CD-ROM Media Device Path........................................................ 131
5.3.5.3 Vendor-Defined Media Device Path ............................................. 131
5.3.5.4 File Path Media Device Path ........................................................ 132
5.3.5.5 Media Protocol Device Path ......................................................... 132
5.3.6 BIOS Boot Specification Device Path ............................................ 133
5.4 Device Path Generation Rules .............................................................. 133
5.4.1 Housekeeping Rules ..................................................................... 133
5.4.2 Rules with ACPI _HID and _UID ................................................... 134
5.4.3 Rules with ACPI _ADR .................................................................. 135

Contents
Version 1.02 12/12/00 ix
5.4.4 Hardware vs. Messaging Device Path Rules................................. 135
5.4.5 Media Device Path Rules .............................................................. 136
5.4.6 Other Rules ................................................................................... 136
6 Device I/O Protocol
6.1 Device I/O Overview .............................................................................. 137
6.2 DEVICE_IO Protocol ............................................................................. 138
6.2.1 DEVICE_IO.Mem(), .Io(), and .Pci()............................................... 141
6.2.2 DEVICE_IO.PciDevicePath()......................................................... 143
6.2.3 DEVICE_IO.Map() ......................................................................... 144
6.2.4 DEVICE_IO.Unmap()..................................................................... 146
6.2.5 DEVICE_IO.AllocateBuffer().......................................................... 147
6.2.6 DEVICE_IO.Flush() ....................................................................... 149
6.2.7 DEVICE_IO.FreeBuffer() ............................................................... 150
7 Console I/O Protocol
7.1 Console I/O Overview............................................................................ 151
7.2 ConsoleIn Definition............................................................................... 152
7.3 SIMPLE_INPUT Protocol....................................................................... 154
7.3.1 SIMPLE_INPUT.Reset() ................................................................ 155
7.3.2 SIMPLE_INPUT.ReadKeyStroke................................................... 156
7.4 ConsoleOut or StandardError ................................................................ 157
7.5 SIMPLE_TEXT_OUTPUT Protocol........................................................ 157
7.5.1 SIMPLE_TEXT_OUTPUT.Reset()................................................. 160
7.5.2 SIMPLE_TEXT_OUTPUT.OutputString() ...................................... 161
7.5.3 SIMPLE_TEXT_OUTPUT.TestString().......................................... 164
7.5.4 SIMPLE_TEXT_OUTPUT.QueryMode()........................................ 165
7.5.5 SIMPLE_TEXT_OUTPUT.SetMode()............................................ 166
7.5.6 SIMPLE_TEXT_OUTPUT.SetAttribute()........................................ 167
7.5.7 SIMPLE_TEXT_OUTPUT.ClearScreen() ...................................... 169
7.5.8 SIMPLE_TEXT_OUTPUT.SetCursorPosition() ............................. 170
7.5.9 SIMPLE_TEXT_OUTPUT.EnableCursor() .................................... 171

Extensible Firmware Interface Specification
x 12/12/00 Version 1.02
8 Block I/O Protocol
8.1 BLOCK_IO Protocol............................................................................... 173
8.1.1 EFI_BLOCK_IO.Reset() ................................................................ 176
8.1.2 EFI_BLOCK_IO.ReadBlocks()....................................................... 177
8.1.3 EFI_BLOCK_IO.WriteBlocks()....................................................... 179
8.1.4 BLOCK_IO.FlushBlocks() .............................................................. 181
9 Disk I/O Protocol
9.1 DISK_IO Protocol .................................................................................. 183
9.1.1 EFI_DISK_IO.ReadDisk() .............................................................. 185
9.1.2 EFI_DISK_IO.WriteDisk() .............................................................. 186
10 File System Protocol
10.1 Simple File System Protocol.................................................................. 187
10.1.1 EFI_FILE_IO_INTERFACE.OpenVolume() ................................... 189
10.2 EFI_FILE Protocol ................................................................................. 190
10.2.1 EFI_FILE.Open() ........................................................................... 192
10.2.2 EFI_FILE.Close()........................................................................... 195
10.2.3 EFI_FILE.Delete().......................................................................... 196
10.2.4 EFI_FILE.Read() ........................................................................... 197
10.2.5 EFI_FILE.Write()............................................................................ 198
10.2.6 EFI_FILE.SetPosition().................................................................. 199
10.2.7 EFI_FILE.GetPosition().................................................................. 200
10.2.8 EFI_FILE.GetInfo() ........................................................................ 201
10.2.9 EFI_FILE.SetInfo()......................................................................... 202
10.2.10 EFI_FILE.Flush() ........................................................................... 203
10.2.11 EFI_FILE_INFO............................................................................. 204
10.2.12 EFI_FILE_SYSTEM_INFO ............................................................ 206
10.2.13 EFI_FILE_SYSTEM_VOLUME_LABEL......................................... 207
11 Load File Protocol
11.1 LOAD_FILE Protocol ............................................................................. 209
11.1.1 LOAD_FILE.LoadFile() .................................................................. 210

Contents
Version 1.02 12/12/00 xi
12 Serial I/O Protocol
12.1 SERIAL_IO Protocol.............................................................................. 213
12.1.1 SERIAL_IO.Reset() ....................................................................... 217
12.1.2 SERIAL_IO.SetAttributes() ............................................................ 218
12.1.3 SERIAL_IO.SetControl()................................................................ 220
12.1.4 SERIAL_IO.GetControl() ............................................................... 222
12.1.5 SERIAL_IO.Write() ........................................................................ 223
12.1.6 SERIAL_IO.Read() ........................................................................ 224
13 Unicode Collation Protocol
13.1 UNICODE_COLLATION Protocol.......................................................... 225
13.1.1 UNICODE_COLLATION.StriColl()................................................. 227
13.1.2 UNICODE_COLLATION.MetaiMatch().......................................... 228
13.1.3 UNICODE_COLLATION.StrLwr() .................................................. 230
13.1.4 UNICODE_COLLATION.StrUpr() .................................................. 231
13.1.5 UNICODE_COLLATION.FatToStr()............................................... 232
13.1.6 UNICODE_COLLATION.StrToFat()............................................... 233
14 PXE Base Code Protocol35
14.1 EFI_PXE_BASE_CODE Protocol.......................................................... 235
14.1.1 EFI_PXE_BASE_CODE.Start() ..................................................... 247
14.1.2 EFI_PXE_BASE_CODE.Stop() ..................................................... 250
14.1.3 EFI_PXE_BASE_CODE.Dhcp() .................................................... 251
14.1.4 EFI_PXE_BASE_CODE.Discover()............................................... 253
14.1.5 EFI_PXE_BASE_CODE.Mtftp()..................................................... 257
14.1.6 EFI_PXE_BASE_CODE.UdpWrite().............................................. 261
14.1.7 EFI_PXE_BASE_CODE.UdpRead().............................................. 263
14.1.8 EFI_PXE_BASE_CODE.SetIpFilter() ............................................ 266
14.1.9 EFI_PXE_BASE_CODE.Arp() ....................................................... 267
14.1.10 EFI_PXE_BASE_CODE.SetParameters()..................................... 268
14.1.11 EFI_PXE_BASE_CODE.SetStationIp() ......................................... 270
14.1.12 EFI_PXE_BASE_CODE.SetPackets()........................................... 271
14.2 EFI_PXE_BASE_CODE_CALLBACK Protocol ..................................... 273
14.2.1 EFI_PXE_BASE_CODE_CALLBACK.Callback() .......................... 274

Extensible Firmware Interface Specification
xii 12/12/00 Version 1.02
15 Simple Network Protocol
15.1 EFI_SIMPLE_NETWORK Protocol........................................................ 277
15.1.1 EFI_SIMPLE_NETWORK.Start() ..................................................... 282
15.1.2 EFI_SIMPLE_NETWORK.Stop() ..................................................... 283
15.1.3 EFI_SIMPLE_NETWORK.Initialize()................................................ 284
15.1.4 EFI_SIMPLE_NETWORK.Reset() ................................................... 285
15.1.5 EFI_SIMPLE_NETWORK.Shutdown()............................................. 286
15.1.6 EFI_SIMPLE_NETWORK.ReceiveFilters() ...................................... 287
15.1.7 EFI_SIMPLE_NETWORK.StationAddress() .................................... 289
15.1.8 EFI_SIMPLE_NETWORK.Statistics() .............................................. 290
15.1.9 EFI_SIMPLE_NETWORK.MCastIPtoMAC() .................................... 293
15.1.10 EFI_SIMPLE_NETWORK.NvData()............................................... 294
15.1.11 EFI_SIMPLE_NETWORK.GetStatus()........................................... 296
15.1.12 EFI_SIMPLE_NETWORK.Transmit()............................................. 298
15.1.13 EFI_SIMPLE_NETWORK.Receive().............................................. 300
15.2 NETWORK_INTERFACE_IDENTIFIER Protocol .................................. 302
16 File System Format
16.1 System Partition .................................................................................... 305
16.1.1 File System Format ....................................................................... 306
16.1.2 File Names .................................................................................... 306
16.1.3 Directory Structure......................................................................... 306
16.2 Partition Discovery................................................................................. 308
16.2.1 EFI Partition Header ...................................................................... 309
16.2.2 ISO-9660 and El Torito .................................................................. 314
16.2.3 Legacy Master Boot Record .......................................................... 314
16.2.4 Legacy Master Boot Record and GPT Partitions ........................... 316
16.3 Media Formats....................................................................................... 317
16.3.1 Removable Media.......................................................................... 317
16.3.2 Diskette.......................................................................................... 317
16.3.3 Hard Drive ..................................................................................... 317
16.3.4 CD-ROM and DVD-ROM............................................................... 318
16.3.5 Network ......................................................................................... 318

Contents
Version 1.02 12/12/00 xiii
17 Boot Manager
17.1 Firmware Boot Manager ........................................................................ 319
17.2 Globally-Defined Variables .................................................................... 323
17.3 Boot Option Variables Default Behavior ................................................ 325
17.4 Boot Mechanisms .................................................................................. 325
17.4.1 Boot via Simple File Protocol......................................................... 325
17.4.1.1 Removable Media Boot Behavior ............................................... 325
17.4.2 Boot via LOAD_FILE Protocol ....................................................... 326
17.4.2.1 Network Booting ......................................................................... 326
17.4.2.2 Future Boot Media...................................................................... 326
18 PCI Expansion ROM
18.1 Standard PCI Expansion ROM Header ................................................. 327
18.2 EFI PCI Expansion ROM Header .......................................................... 328
18.3 Multiple Image Format Support ............................................................. 329
18.4 EFI PCI Expansion ROM Driver ............................................................ 329
A GUID and Time Formats .................................................................................... 331
B Console3
B.1 SIMPLE_INPUT..................................................................................... 333
B.2 SIMPLE_TEXT_OUTPUT...................................................................... 334
C Device Path Examples
C.1 Example Computer System ................................................................... 337
C.2 Legacy Floppy ....................................................................................... 338
C.3 IDE Disk................................................................................................. 339
C.4 Secondary Root PCI Bus with PCI to PCI Bridge .................................. 341
C.5 ACPI Terms ........................................................................................... 342
C.6 EFI Device Path as a Name Space ....................................................... 343
D Status Codes ....................................................................................................... 345
E Alphabetic Function Lists ................................................................................. 347
F Glossary ................................................................................................................ 359

Extensible Firmware Interface Specification
xiv 12/12/00 Version 1.02
G 32/64-Bit UNDI Specification
G.1 Introduction............................................................................................ 373
G.1.1 Definitions...................................................................................... 373
G.1.2 Referenced Specifications ............................................................. 374
G.1.3 OS Network Stacks ....................................................................... 376
G.2 Overview................................................................................................ 378
G.2.1 32/64-bit UNDI Interface................................................................ 378
G.2.2 UNDI Command Format ................................................................ 384
G.3 UNDI C Definitions................................................................................. 386
G.3.1 Portability Macros .......................................................................... 386
G.3.2 Miscellaneous Macros ................................................................... 390
G.3.3 Portability Types ............................................................................ 390
G.3.4 Simple Types................................................................................. 392
G.3.5 Compound Types .......................................................................... 409
G.4 UNDI Commands................................................................................... 416
G.4.1 Command Linking & Queuing........................................................ 417
G.4.2 Get State ....................................................................................... 418
G.4.3 Start............................................................................................... 420
G.4.4 Stop ............................................................................................... 422
G.4.5 Get Init Info.................................................................................... 423
G.4.6 Get Config Info .............................................................................. 427
G.4.7 Initialize.......................................................................................... 430
G.4.8 Reset ............................................................................................. 434
G.4.9 Shutdown....................................................................................... 435
G.4.10 Interrupt Enables ........................................................................... 437
G.4.11 Receive Filters............................................................................... 439
G.4.12 Station Address ............................................................................. 442
G.4.13 Statistics ........................................................................................ 444
G.4.14 MCast IP To MAC.......................................................................... 448
G.4.15 NvData........................................................................................... 449
G.4.16 Get Status...................................................................................... 454
G.4.17 Fill Header ..................................................................................... 456

Contents
Version 1.02 12/12/00 xv
G.4.18 Transmit......................................................................................... 460
G.4.19 Receive.......................................................................................... 464
G.5 UNDI as an EFI Runtime Driver............................................................. 466
Index.......................................................................................................................... 469
Figures
1-1. EFI Conceptual Overview ........................................................................ 10
2-1. Booting Sequence ................................................................................... 13
2-2. Construction of a Protocol ....................................................................... 19
3-1. Device Handle to Protocol Handler Mapping ........................................... 56
4-1. Stack after ImageEntryPoint Called, IA-32 ............................................ 115
4-2. Stack after ImageEntryPoint Called, Itanium-based Systems................ 116
16-1. Nesting of Legacy MBR Partition Records............................................. 308
16-2. GUID Partition Table (GPT) Scheme..................................................... 310
C-1. Example Computer System ................................................................... 337
C-2. Partial ACPI Name Space for Example System .................................... 338
C-3. EFI Device Path Displayed As a Name Space ...................................... 343
G-1. Network Stacks with Three Classes of Drivers ...................................... 376
G-2. !PXE Structures for H/W and S/W UNDI................................................ 378
G-3. Issuing UNDI Commands ...................................................................... 383
G-4. UNDI Command Descriptor Block (CDB) .............................................. 384
G-5. Storage Types ....................................................................................... 390
G-6. UNDI States, Transitions & Valid Commands........................................ 416
G-7. Linked CDBs.......................................................................................... 417
G-8. Queued CDBs ....................................................................................... 418
Tables
1-1. Organization of EFI Specification .............................................................. 2
2-1. EFI Runtime Services .............................................................................. 15
2-2. Common EFI Data Types ........................................................................ 16
2-3. Modifiers for Common EFI Data Types.................................................... 17
2-4. EFI Protocols ........................................................................................... 20
2-5. Required EFI Implementation Elements .................................................. 21
2-6. Optional EFI Implementation Elements ................................................... 22
3-1. Event, Timer, and Task Priority Functions ............................................... 26

Extensible Firmware Interface Specification
xvi 12/12/00 Version 1.02
3-3. TPL Usage............................................................................................... 27
3-5. TPL Restrictions ...................................................................................... 28
3-7. Memory Allocation Functions................................................................... 42
3-9. Memory Type Usage Before ExitBootServices() ..................................... 43
3-11. Memory Type Usage After ExitBootServices() ........................................ 44
3-13. Protocol Interface Functions .................................................................... 55
3-15. Image Type Differences Summary .......................................................... 67
3-17. Image Functions ...................................................................................... 68
3-19. Variable Services Functions .................................................................... 77
3-21. Time Services Functions ......................................................................... 84
3-23. Virtual Memory Functions ........................................................................ 91
3-25. Miscellaneous Services Functions........................................................... 95
5-1. Generic Device Path Node Structure..................................................... 119
5-3. Device Path End Structure .................................................................... 120
5-5. PCI Device Path .................................................................................... 121
5-6. PCCARD Device Path ........................................................................... 121
5-7. Memory Mapped Device Path ............................................................... 122
5-8. Vendor-Defined Device Path ................................................................. 122
5-9. Controller Device Path........................................................................... 122
5-10. ACPI Device Path.................................................................................. 123
5-11. ATAPI Device Path................................................................................ 124
5-12. SCSI Device Path.................................................................................. 124
5-13. Fibre Channel Device Path.................................................................... 124
5-14. 1394 Device Path .................................................................................. 125
5-15. USB Device Path................................................................................... 125
5-16. USB Class Device Path......................................................................... 126
5-17. I2O Device Path ..................................................................................... 126
5-18. MAC Address Device Path .................................................................... 126
5-19. IPv4 Device Path ................................................................................... 127
5-20. IPv6 Device Path ................................................................................... 127
5-21. InfiniBand†Device Path ........................................................................ 128
5-22. UART Device Path................................................................................. 128
5-23. Vendor-Defined Messaging Device Path ............................................... 129
5-24. Hard Drive Media Device Path .............................................................. 130

Contents
Version 1.02 12/12/00 xvii
5-25. CD-ROM Media Device Path................................................................. 131
5-26. Vendor-Defined Media Device Path....................................................... 131
5-27. File Path Media Device Path ................................................................. 132
5-28. Media Protocol Media Device Path........................................................ 132
5-29. BIOS Boot Specification Device Path .................................................... 133
5-30. ACPI _CRS to EFI Device Path Mapping .............................................. 134
5-31. ACPI _ADR to EFI Device Path Mapping .............................................. 135
6-1. PCI Address .......................................................................................... 142
7-1. Supported Unicode Control Characters................................................. 152
7-3. EFI Scan Codes for SIMPLE_INPUT_INTERFACE .............................. 152
14-1. PXE Tag Definitions for EFI................................................................... 245
14-2. Destination IP Filter Operation............................................................... 264
14-3. Destination UDP Port Filter Operation ................................................... 264
14-4. Source IP Filter Operation ..................................................................... 265
14-5. Source UDP Port Filter Operation ......................................................... 265
16-1. GUID Partition Table Header................................................................. 311
16-2. GUID Partition Entry .............................................................................. 312
16-3. Defined GUID Partition Entry - Partition Type GUIDs............................ 313
16-4. Defined GUID Partition Entry - Attributes............................................... 313
16-5. Legacy Master Boot Record .................................................................. 315
16-6. Legacy Master Boot Record Partition Record........................................ 315
16-7. PMBR Entry to Precede a GUID Partition Table Header ....................... 316
17-1 Global Variables .................................................................................... 323
17-2 EFI Image Types ................................................................................... 326
18-1. Standard PCI Expansion ROM Header ................................................. 327
18-2. PCI Data Structure................................................................................. 328
18-3. EFI PCI Expansion ROM Header .......................................................... 329
A-1. EFI GUID Format................................................................................... 331
B-1. EFI Scan Codes for SIMPLE_INPUT..................................................... 333
B-2. Control Sequences that Can Be Used to Implement
SIMPLE_TEXT_OUTPUT...................................................................... 334
C-1. Legacy Floppy Device Path ................................................................... 339
C-2. IDE Disk Device Path ............................................................................ 340
C-3. Secondary Root PCI Bus with PCI to PCI Bridge Device Path .............. 341

Extensible Firmware Interface Specification
xviii 12/12/00 Version 1.02
D-1. EFI_STATUS Codes Ranges ................................................................ 345
D-2. EFI_STATUS Success Codes (High bit clear)....................................... 345
D-3. EFI_STATUS Error Codes (High bit set) ............................................... 345
D-4. EFI_STATUS Warning Codes (High bit clear) ....................................... 346
E-1. Functions Listed in Alphabetic Order..................................................... 347
E-2. Functions Listed Alphabetically Within Service or Protocol ................... 354
G-1. Definitions.............................................................................................. 373
G-2. Referenced Specification....................................................................... 374
G-3. Driver Types: Pros and Cons................................................................ 377
G-4. !PXE Structure Field Definitions ............................................................ 379
G-5. UNDI CDB Field Definitions................................................................... 384

Version 1.02 12/12/00 1
1
Introduction
This Extensible Firmware Interface (hereafter known as EFI) Specification describes an interface
between the operating system (OS) and the platform firmware. The interface is in the form of data
tables that contain platform-related information, and boot and runtime service calls that are
available to the OS and its loader. Together, these provide a standard environment for booting
an OS.
The EFI specification is designed as a pure interface specification. As such, the specification
defines the set of interfaces and structures that platform firmware must implement. Similarly, the
specification defines the set of interfaces and structures that the OS may use in booting. How either
the firmware developer chooses to implement the required elements or the OS developer chooses to
make use of those interfaces and structures is an implementation decision left for the developer.
The intent of this specification is to define a way for the OS and platform firmware to communicate
only information necessary to support the OS boot process. This is accomplished through a formal
and complete abstract specification of the software-visible interface presented to the OS by the
platform and firmware.
Using this formal definition, a shrink-wrap OS intended to run on Intel®architecture-based
platforms will be able to boot on a variety of system designs without further platform or OS
customization. The definition will also allow for platform innovation to introduce new features and
functionality that enhance platform capability without requiring new code to be written in the OS
boot sequence.
Furthermore, an abstract specification opens a route to replace legacy devices and firmware code
over time. New device types and associated code can provide equivalent functionality through the
same defined abstract interface, again without impact on the OS boot support code.
The EFI specification is primarily intended for the next generation of IA-32 and Itanium™-based
computers. Thus, the specification is applicable to a full range of hardware platforms from mobile
systems to servers. The specification provides a core set of services along with a selection of
protocol interfaces. The selection of protocol interfaces can evolve over time to be optimized for
various platform market segments. At the same time the specification allows maximum
extensibility and customization abilities for OEMs to allow differentiation. In this, the purpose of
EFI is to define an evolutionary path from the traditional “PC-AT†”-style boot world into a legacy-
API free environment.

Extensible Firmware Interface Specification
2 12/12/00 Version 1.02
1.1 Overview
This specification is organized as follows:
Table 1-1. Organization of EFI Specification
Chapter/Appendix Description
1. Introduction Provides an overview of the EFI Specification.
2. Overview Describes the major components of EFI, including the boot manager,
firmware core, calling conventions, protocols, and requirements.
3. Services Contains definitions for the fundamental services that are present in an
EFI-compliant system.
4. EFI Image Defines EFI images, a class of files that contain executable code.
5. Device Path Protocol Defines the device path protocol and provides the information needed to
construct and manage device paths in the EFI environment.
6. Device I/O Protocol Defines the Device I/O protocol, which is used by code running in the
EFI boot services environment to access memory and I/O.
7. Console I/O Protocol Defines the Console I/O protocol, which handles input and output of text-
based information intended for the system user while executing in the
EFI boot services environment.
8. Block I/O Protocol Defines the Block I/O protocol, which is used to abstract mass storage
devices to allow code running in the EFI boot services environment to
access the devices without specific knowledge of the type of device or
controller that manages the device.
9. Disk I/O Protocol Defines the Disk I/O protocol, which is used to abstract Block I/O devices
to allow non-block sized I/O operations.
10. File System Protocol Defines the File System protocol, which allows code running in the EFI
boot services environment to obtain file based access to a device.
11. Load File Protocol Defines the Load File protocol, which allows code running in the EFI boot
services environment to find and load other modules of code.
12. Serial I/O Protocol Defines the Serial I/O protocol, which is used to abstract byte stream
devices.
13. Unicode Collation Protocol Defines the Unicode Collation protocol, which is used to allow code
running in the EFI boot services environment to perform lexical
comparison functions on Unicode strings for given languages.
14. PXE Base Code Protocol Defines the PXE Base Code protocol, which is used perform network
boot operations.
continued
Table of contents
Other Intel Network Router manuals

Intel
Intel 410 User manual

Intel
Intel Express 8205 User manual

Intel
Intel SBCEGBESW10 CLI User manual

Intel
Intel NetStructure ZT 4901 Manual

Intel
Intel ER8100STUS - Express 8100 Router User manual

Intel
Intel Express 9545 User manual

Intel
Intel Express 10 User manual

Intel
Intel VTech VNT846 User manual

Intel
Intel ZT 8101 10/100 User manual

Intel
Intel Express Routers 9000 User manual