Extensible Firmware Interface Specification
Total Page:16
File Type:pdf, Size:1020Kb
Extensible Firmware Interface Specification Version 1.02 December 12, 2000 Extensible Firmware Interface Specification 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. ii 12/12/00 Version 1.02 Revision History Revision Revision History Date 1.01 Original Issue. 12/01/00 1.02 Update for legal and trademarking requirements. 12/12/00 Version 1.02 12/12/00 iii Extensible Firmware Interface Specification iv 12/12/00 Version 1.02 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 Version 1.02 12/12/00 v Extensible Firmware Interface Specification 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 vi 12/12/00 Version 1.02 Contents 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