US7974987B1 - Database for storing device handle data in an extensible firmware interface environment - Google Patents
Database for storing device handle data in an extensible firmware interface environment Download PDFInfo
- Publication number
- US7974987B1 US7974987B1 US12/776,926 US77692610A US7974987B1 US 7974987 B1 US7974987 B1 US 7974987B1 US 77692610 A US77692610 A US 77692610A US 7974987 B1 US7974987 B1 US 7974987B1
- Authority
- US
- United States
- Prior art keywords
- storing
- protocol
- family
- linked list
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Definitions
- BIOS Basic Input and Output System
- the new firmware architecture is defined via a set of specifications.
- One of the specifications is called the Extensible Firmware Interface (“EFI”) Specification and is available from INTEL CORPORATION.
- EFI Extensible Firmware Interface
- UEFI Unified Extensible Firmware Interface Forum
- the EFI Specification describes an interface between the operating system and the system firmware.
- the Specification defines the interface that platform firmware must implement and the interface that the operating system may use in booting. How the firmware implements the interface is left up to the manufacturer of the firmware.
- the EFI Specification provides mechanisms for EFI drivers to communicate with each other, and the EFI core provides functions such as allocation of memory, creating events, setting the clock, and many others. This is accomplished through a formal and complete abstract specification of the software-visible interface presented to the operating system by the platform and the firmware.
- the Framework INTEL Platform Innovation Framework for EFI
- the Framework defines programmatic interfaces for performing the full range of operations that are required to initialize the platform from power on through transfer of control to the operating system.
- the Framework defines two major execution phases: Pre-EFI Initialization (“PEI”) and the Driver Execution Environment (“DXE”).
- PEI Pre-EFI Initialization
- DXE Driver Execution Environment
- the PEI phase includes the minimum amount of program code needed to perform basic platform initialization and is executed from non-volatile memory.
- the PEI phase has completed its initialization, including the initialization of main memory, control passes to the DXE phase, which performs higher-level platform initialization and diagnostic functions.
- the DXE phase is controlled by core code called the DXE foundation.
- the DXE foundation is a boot service image that is responsible for producing EFI boot services, EFI runtime services, and DXE services.
- the DXE foundation includes a DXE dispatcher that discovers DXE drivers stored in firmware volumes and executes them in the proper order.
- the DXE drivers are the components that actually initialize the platform and provide the services required to boot an EFI-compliant operation system or a set of EFI-compliant system utilities.
- the DXE drivers can also expose services, called protocols, which can be utilized by other DXE drivers.
- the DXE foundation maintains a device handle database that contains data regarding the installed protocols and the hardware devices with which they are associated.
- Other DXE drivers can utilize EFI boot services to look up the available protocols provided by other DXE drivers in the handle database.
- the Framework indicates that the DXE foundation should maintain a handle database for storing data identifying the device handles and their installed protocols, the Framework does not, however, define how the device handle database should be implemented.
- a device handle database and methods for maintaining and accessing same are provided that allow quick access to installed protocols based upon either the globally unique identifier (“GUID”) associated with the protocol or upon the device handle upon which the protocol is installed.
- GUID globally unique identifier
- a method for creating a device handle database in an extensible firmware interface environment.
- a device handle database is created for storing data identifying the protocols that have been installed on one or more device handles.
- a device handle (or “handle”) is a unique identifier corresponding to a device.
- the device handle database includes an array of elements.
- Each element in the array is utilized to store protocol data for a family of protocols.
- a family of protocols is a group of protocol instances, each of which has the same GUID.
- the array of elements may be sorted based upon the GUID of each family to enable the quick location of any protocol family, and any protocol instance within the family, using a binary search algorithm.
- each element in the array comprises a family data structure.
- the family data structure includes a field for storing the GUID for the family along with a field for storing a pointer to a linked list.
- the linked list stores the protocol instance data for each of the protocols in the family.
- the linked list includes one or more nodes. Each node corresponds to a protocol instance in the family. Each node may include a field for storing a pointer to a protocol interface for a protocol instance and a field for storing a pointer to the family data structure for the protocol family.
- Each node may also include a field for storing a pointer to a device handle data structure identifying the device handle upon which the protocol is installed, a field for storing a link to a next node in the linked list for the family, and a field for storing a link to a next node in a linked list of nodes corresponding to protocols that have been installed on the same device handle.
- a first linked list is generated that has one or more nodes. Each node in the first linked list is utilized to store protocol instance data for a protocol having the same GUID as other nodes in the first linked list.
- a second linked list is also created from the nodes. Each of the nodes in the second linked list stores data for a protocol installed on the same device handle as other nodes in the second linked list. Each of the nodes participates in a first linked list and in a second linked list. In this manner, any protocol instance can be located based upon either the GUID or the device handle upon which the protocol has been installed.
- each node may further include a field for storing a pointer to a family data structure.
- the family data structure includes a field for storing the GUID for the protocols in the family and a field for storing a pointer to the first linked list.
- the family data structures may be stored in an array. The array may be sorted based upon the GUID of each family to permit the quick access to any protocol based on the GUID.
- each node may further include a field for storing a pointer to a device handle data structure.
- the device handle data structure includes a field for storing a pointer to the second linked list.
- Each node may also include a field for storing a link to a next node in the first linked list and a field for storing a pointer to a next node in the second linked list.
- a computer-readable medium has a data structure stored thereon, the data structure for use in storing a device handle database in an EFI environment.
- the data structure includes one or more first linked lists.
- Each of the first linked lists has nodes corresponding to installed protocols having an identical globally unique identifier (GUID).
- the data structure also has one or more second linked lists.
- Each of the second linked lists has one or more nodes corresponding to protocols installed on the same device handle.
- Each of the nodes participates in a first linked list and a second linked list.
- the data structure may further include a sorted array of elements. Each of the elements in the array is used to store a family data structure.
- the family data structure includes a field for storing a GUID for one of the first linked lists and a field for storing a pointer to one of the first linked lists.
- the data structure may further include one or more device handle data structures. Each device handle data structure includes a field for storing a pointer to one of the second linked lists.
- Each of the nodes may include a field for storing a pointer to a protocol interface.
- aspects of the disclosure provided herein may also be implemented as a computer process, a computing system, or as an article of manufacture such as a computer program product or computer-readable medium.
- the computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process.
- the computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
- FIG. 1 is a computer architecture diagram that illustrates various components of a computer that provides an illustrative operating environment for the implementations presented herein;
- FIGS. 2 and 3 are software architecture diagrams that illustrate aspects of an EFI environment utilized by the embodiments presented herein;
- FIG. 4 is a software architecture diagram illustrating aspects of a DXE phase of operation that provides an operating environment for the embodiments described herein;
- FIGS. 5-7 are data structure diagrams illustrating aspects of a device handle database provided herein.
- FIG. 8 is a flow diagram showing an illustrative process for installing a protocol in a device handle database provided herein.
- Embodiments of the disclosure presented herein provide methods, systems, apparatus, and computer-readable media for providing and utilizing a device handle database.
- references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustration specific embodiments or examples. Referring now to the drawings, in which like numerals represent like elements throughout the several figures, aspects of an exemplary operating environment and the implementations provided herein will be described.
- FIG. 1 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. While the invention will be described in the general context of program modules that execute in conjunction with the execution of a computer firmware, those skilled in the art will recognize that the invention may also be implemented in combination with other program modules.
- program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
- program modules may be located in both local and remote memory storage devices.
- FIG. 1 shows an illustrative computer architecture for a computer 100 that is operative to provide an EFI firmware that provides a DXE phase and that maintains a device handle database during the DXE phase.
- the computer 100 includes a baseboard, or “motherboard”, which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication path.
- a central processing unit (“CPU”) 102 operates in conjunction with a chipset 104 .
- the CPU 102 is a standard central processor that performs arithmetic and logical operations necessary for the operation of the computer.
- the chipset 104 includes a north bridge 106 and a south bridge 108 .
- the north bridge 106 provides an interface between the CPU 102 and the remainder of the computer 100 .
- the north bridge 106 also provides an interface to a random access memory (“RAM”) used as the main memory 114 in the computer 100 and, possibly, to an on-board graphics adapter 112 .
- the north bridge 106 may also include functionality for providing networking functionality through a gigabit Ethernet adapter 110 .
- the gigabit Ethernet adapter 110 is capable of connecting the computer 100 to another computer via a network. Connections that may be made by the network adapter 110 may include local area network (“LAN”) or wide area network (“WAN”) connections.
- LAN and WAN networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
- the north bridge 106 is connected to the south bridge 108 .
- the south bridge 108 is responsible for controlling many of the input/output functions of the computer 100 .
- the south bridge 108 may provide one or more universal serial bus (“USB”) ports 116 , a sound adapter 124 , an Ethernet controller 134 , and one or more general purpose input/output (“GPIO”) pins 118 .
- the south bridge 108 may also provide a bus for interfacing peripheral card devices such as a BIOS boot system-compliant SCSI host bus adapter 130 .
- the bus comprises a peripheral component interconnect (“PCI”) bus.
- the south bridge 108 may also provide a system management bus 132 for use in managing the various components of the computer 100 . Power management circuitry 126 and clock generation circuitry 128 may also be utilized during the operation of the south bridge 108 .
- the south bridge 108 is also operative to provide one or more interfaces for connecting mass storage devices to the computer 100 .
- the south bridge 108 includes a serial advanced technology attachment (“SATA”) adapter for providing one or more SATA ports 120 and an ATA100 adapter for providing one or more ATA100 ports 122 .
- SATA ports 120 and the ATA100 ports 122 may be, in turn, connected to one or more mass storage devices storing an operating system and application programs.
- an operating system comprises a set of programs that control operations of a computer and allocation of resources.
- An application program is software that runs on top of the operating system software and uses computer resources made available through the operating system to perform application specific tasks desired by the user.
- computer-readable media can be any available media that can be accessed by the computer 100 .
- computer-readable media may comprise computer storage media and communication media.
- Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer.
- a low pin count (“LPC”) interface may also be provided by the south bridge 108 for connecting a “Super I/O” device 138 .
- the Super I/O device 138 is responsible for providing a number of input/output ports, including a keyboard port, a mouse port, a serial interface, a parallel port, and other types of input/output ports.
- the LPC interface may also connect a computer storage media such as a ROM or a flash memory such as a non-volatile random access memory (“NVRAM”) for storing the firmware 136 that includes program code containing the basic routines that help to start up the computer 100 and to transfer information between elements within the computer 100 .
- the EFI firmware 136 comprises a firmware that is compatible with the EFI Specification.
- the LPC interface may also be utilized to connect a NVRAM 137 to the computer 100 .
- the NVRAM 137 may be utilized by the firmware 136 to store configuration data for the computer 100 .
- the configuration data for the computer 100 may also be stored on the same NVRAM 137 as the firmware 136 .
- the computer 100 may comprise other types of computing devices, including hand-held computers, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that the computer 100 may not include all of the components shown in FIG. 1 , may include other components that are not explicitly shown in FIG. 1 , or may utilize an architecture completely different than that shown in FIG. 1 .
- the firmware 136 comprises a firmware compatible with the EFI Specification from INTEL CORPORATION or from the UEFI FORUM.
- the EFI Specification describes an interface between the operating system 202 and the system firmware 136 .
- the EFI Specification defines the interface that platform firmware must implement, and the interface that the operating system 202 may use in booting. How the firmware 136 implements the interface is left up to the manufacturer of the firmware.
- the intent of the Specification is to define a way for the operating system 202 and firmware 136 to communicate only information necessary to support the operating system boot process. This is accomplished through a formal and complete abstract Specification of the software-visible interface presented to the operating system by the platform and the firmware.
- both the EFI 206 and a BIOS 208 may be presented in the firmware 136 .
- an interface 212 may be provided for use by legacy operating systems and applications. Additional details regarding the architecture and operation of the EFI 204 are provided below with respect to FIGS. 3-4 . Additional details regarding the operation and architecture of EFI can be found in the EFI Specification and in the Framework, both of which are available from INTEL CORPORATION end expressly incorporated herein by reference.
- the system includes platform hardware 316 and an operating system 202 .
- the platform firmware 308 may retrieve an OS image from the EFI system partition 318 using an EFI O/S loader 302 .
- the EFI system partition 318 may be an architecturally shareable system partition. As such, the EFI system partition 318 defines a partition and file system that are designed to allow safe sharing of mass storage between multiple vendors.
- An O/S partition 320 may also be utilized.
- the EFI O/S loader 302 continues to boot the complete operating system 202 .
- the EFI O/S loader 302 may use EFI boot services 304 and interface to other supported specifications to survey, comprehend, and initialize the various platform components and the operating system software that manages them.
- interfaces 314 from other specifications may also be present on the system.
- the Advanced Configuration and Power Management Interface (“ACPI”) and the System Management BIOS (“SMBIOS”) specifications may be supported.
- EFI boot services 304 provides interfaces for devices and system functionality that can be used during boot time.
- EFI runtime services 306 may also be available to the O/S loader 302 during the boot phase. For example, a minimal set of runtime services may be presented to ensure appropriate abstraction of base platform hardware resources that may be needed by the operating system 202 during its normal operation.
- EFI allows extension of platform firmware by loading EFI driver and EFI application images which, when loaded, have access to all EFI-defined runtime and boot services.
- the EFI boot loader 312 is a component in the EFI firmware that determines which program modules should be explicitly loaded and when. Once the EFI firmware is initialized, it passes control to the boot loader 312 . The boot loader 312 is then responsible for determining which of the program modules to load and in what order.
- PEI includes the minimum amount of program code needed to perform basic platform initialization and is executed from non-volatile memory.
- control passes to the DXE, which performs higher-level platform initialization and diagnostic functions.
- FIG. 4 shows aspects of an illustrative DXE phase of execution.
- the DXE foundation 402 is a boot service image that is responsible for producing EFI boot services, EFI runtime services, and DXE services.
- the DXE foundation 402 is an implementation of EFI.
- the DXE foundation 402 includes a DXE dispatcher (not shown in FIG. 4 ) that discovers the DXE drivers 418 A- 418 N stored in firmware volumes and executes them in the proper order.
- the DXE drivers 418 A- 418 N are required to initialize the processor, chipset, and platform. They are also required to produce DXE architectural protocols and any additional protocol services required to produce I/O abstractions and boot devices.
- the DXE drivers 418 A- 418 N are the components that actually initialize the platform and provide the services required to boot an EFI-compliant operation system or a set of EFI-compliant system utilities. DXE drivers may consume EFI boot services, EFI runtime services, and DXE services to perform their functions. As will be described in greater detail below, DXE drivers may expose their services for use by other DXE drivers through the use of a protocol interface.
- the EFI system table 404 is passed to every executable component in the DXE phase.
- the EFI system table 404 contains a pointer to the EFI boot services table 408 and the EFI runtime services table 406 . It also contains pointers to the console devices and their associated I/O protocols. Services that are available through the EFI boot services table 408 include task priority services, memory services, event and timer services, image services, and driver support services.
- the EFI boot services table 408 also contains protocol handler services 410 to access the contents of the handle database 412 .
- the handle database 412 is where protocol interfaces produced by the DXE drivers 418 A- 418 N are registered.
- the device handle database 412 contains data identifying the particular device handle upon which each protocol interface is installed.
- a device handle is a unique identifier corresponding to a device.
- the DXE drivers 418 A- 418 N can use the protocol handler services 410 to look up the services produced by other DXE drivers 418 A- 418 N.
- the protocol handler services 408 provide services to add and remove device handles from the handle database 412 . It also provides services to add and remove protocols from the device handles in the device handle database 412 . Additional services are available that allow any component to look up handles in the device handle database 412 , and open and close protocols in the device handle database 412 .
- the InstallProtocolInterface service 414 A installs a protocol interface on a device handle
- the UninstallProtocolInterface service 414 B removes a protocol interface from a device handle
- the ReinstallProtocolInterface service 414 C reinstalls a protocol interface on a device handle
- the LocateHandle service 414 D returns an array of handles that support a specified protocol
- the HandleProtocol service 414 E queries a handle to determine if it supports a specified protocol (a pointer to the matching protocol interface structure is returned if it does).
- Other protocol handler services not shown in FIG. 4 are also set forth by the Framework.
- the DXE driver 418 A may desire to expose a protocol specific function 426 .
- the driver 418 N makes a call 428 to the InstallProtocolInterface service 414 A with the device handle upon which the protocol should be installed, the GUID 424 , and a pointer to a protocol interface 420 .
- the protocol interface 420 has a unique GUID 424 .
- the protocol interface 420 includes a function pointer 422 to the protocol specific function 426 .
- data is added to the device handle database 412 that includes a pointer 430 to the protocol interface 420 .
- the contents of the driver handle database 412 are built dynamically through calls to the InstallProtocolInterface function.
- the data stored in the database 412 in response to these calls is utilized when requests are made to identify a particular protocol installed on a particular handle or for a protocol with a specified GUID.
- the Framework indicates that the device handle database 412 should be provided during the DXE phase, the Framework does not provide any implementation details for the device handle database 412 .
- An illustrative implementation of the device handle database 412 is described below with respect to FIGS. 5-7 .
- the device handle database 412 includes an array 502 of elements.
- Each element in the array 502 is utilized to store protocol data for a protocol family.
- a family of protocols is a group of protocol instances, each of which has the same GUID.
- the array 502 of elements may be sorted based upon the GUID of each protocol family to enable the quick location of any protocol family, and any protocol instance within the family, using a binary search algorithm.
- the array 502 is maintained in sorted order by inserting new elements in their sorted position based upon the GUID of the protocol family.
- the device handle database 412 includes an array 502 of protocol family data structures 504 A- 504 N.
- Each of the protocol family data structures 504 A- 504 N stores protocol data for a family of protocol instances, each of which has the same GUID.
- Each protocol family data structure 504 A- 504 N includes a field 506 for storing the GUID for the family along with a field 508 for storing a pointer to a linked list of protocol data structures.
- the linked list of protocol data structures stores the protocol instance data for each of the protocols in the family referred to by the particular protocol family data structure 504 .
- DXE drivers may also register to be notified when a protocol having a specified GUID is installed in the device handle database 412 .
- the protocol family data structure 504 may also include a field 510 for storing a pointer to a linked list of notification data structures that are utilized for this purpose. Additional details regarding the notification data structures and their use are provided below with respect to FIG. 7 .
- each protocol family data structure 504 includes a field 508 for storing a pointer to a linked list of protocol data structures (also referred to herein as “nodes”).
- the protocol family data structure 504 A includes a pointer to a protocol data structure 602 A.
- the protocol data structures 602 include a field 604 for storing a link to a sibling protocol data structure 602 in the linked list of protocol data structures.
- sibling protocol data structure refers to another protocol data structure in the same protocol family (i.e. having the same GUID).
- the field 604 A stores a link to the sibling protocol data structure 602 B.
- the protocol family data structure 504 A acts as the head of a linked list of protocol data structures.
- the array 502 can be searched for the desired GUID. Once the GUID has been located, the list of protocol structures can be searched to locate the proper protocol instance.
- Each of the protocol data structures 602 also includes a field 612 for storing a pointer to a protocol interface 420 for a protocol instance.
- the node 602 A includes a field 612 A storing a pointer to the protocol interface 420 A for the protocol instance defined by the node 602 A.
- a field 610 is also provided for storing a pointer back to the protocol family data structure 504 for the family.
- a field 608 is also provided for storing a temporary link. The field 608 is utilized to create temporary lists without copying the nodes 602 . In this manner, a copy of the nodes 602 is never made, thereby avoiding synchronization issues.
- each node 602 may also include a field 614 for storing a pointer to a device handle data structure 616 .
- the device handle data structure 616 includes a data field for storing a pointer to a linked list of protocol data structures.
- the nodes 602 A- 602 B have links stored in the fields 614 A- 614 B, respectively, to the device handle data structure 616 A. In this manner, data is stored indicating the device handle upon which each of the protocols is installed. In order to identify the device handle upon which a protocol is installed, these links may be followed to the appropriate device handle data structure 616 .
- Each node 602 also includes a field 606 for storing a link to a colleague node.
- a colleague is a node that has been installed on the same device handle.
- the node 602 A includes a field 606 A for storing a link to the node 602 C.
- a second linked list is created between the nodes 602 that links each of the protocol data structures installed on a given device handle. To identify the protocols installed on a particular device handle, links may be followed from the device handle data structure 616 to each of the linked colleague nodes.
- the data structure provided herein comprises a first linked list that is utilized to store protocol instance data for protocols having the same GUID.
- the data structure also includes a second linked list that is also created from the nodes.
- Each of the nodes in the second linked list stores data for a protocol installed on the same device handle as other nodes in the second linked list.
- Each of the nodes participates in a first linked list a second linked list.
- each of the lists is doubly linked. In this manner, any protocol instance can be located based upon either the GUID stored in the protocol family data structure 504 or upon the device handle upon which the protocol has been installed stored in the device handle data structure 616 .
- the protocol family data structure 504 may include a field 510 for storing a pointer to a linked list of notification data structures that are utilized for this purpose.
- FIG. 7 shows an illustrative notification data structure 700 .
- the notification data structure 700 includes a field 702 for storing a link to a sibling notification data structure.
- a sibling notification data structure is another data structure for a notification about protocol with the same GUID.
- a field 704 is also provided for storing a link to a colleague notification data structure.
- a colleague notification data structure is a data structure for a notification for the same event.
- a field 706 is provided in the notification data structure for storing data identifying the event that triggers the notification.
- a field 708 is also provided for storing data identifying the protocol of which the notification consumer was last notified.
- the notification data structure 700 also includes a field 710 for storing a link to the protocol family data structure 504 for the family.
- the linked list of notification data structures is traversed in order to identify the events for which a notification should be provided. Every identified event is signaled using SignalEvent service provided by DXE Foundation. SignalEvent schedules callback of the function associated with the event.
- the function is located inside of the DXE driver that requested notification. Once the function is called, DXE driver can use LocateHandle function to locate newly installed protocol instance.
- DXE Foundation function that registers notification requests returns special registration pointer back to the DXE driver. This pointer can be used with the locate function to locate newly installed protocol.
- the registration pointer is implemented as an address of the notification data structure.
- Last protocol data field of the notification structure is used to return proper protocol instance to the DXE driver. Proper instance can be located by following the sibling link of the protocol node pointed by the last protocol data field. Once protocol instance is returned to the DXE driver, the last protocol field is advanced to the next sibling node.
- an illustrative routine 800 will be described in detail for installing a protocol in a device handle database provided herein.
- the logical operations of the various embodiments described herein are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system.
- the implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operations making up the embodiments of the embodiments described herein are referred to variously as operations, structural devices, acts or modules. It will be recognized by one skilled in the art that these operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof without deviating from the spirit and scope of the present invention as recited within the claims attached hereto.
- the routine 800 begins at operation 802 , where a request is received to install a new protocol in the device handle database 412 .
- the InstallProtocolInterface 414 A may be utilized to perform this function.
- the InstallProtocolInterface 414 A takes a GUID and a pointer to the protocol interface for the protocol to be installed.
- the device handle upon which the protocol is to be installed may or may not be provided.
- the routine 800 branches from operation 804 to operation 806 .
- a determination is made as to whether the provided handle is valid. If not, the routine 800 continues from operation 806 to operation 820 , where an error is returned. If the provided handle is valid, the routine 800 continues from operation 806 to operation 814 , discussed below.
- routine 800 continues from operation 804 to operation 810 , where a new device handle is allocated.
- the routine 800 then continues from operation 810 to operation 814 , where a search for a protocol family having the same GUID as the protocol to be installed is made. This is performed, for instance, by performing a binary search of the array 502 for a protocol family data structure having the specified GUID stored in the field 506 . If a family having the specified GUID is not found, the routine 800 branches from operation 816 to operation 818 , where a new family data structure is created in its sorted position in the array 502 for the specified GUID.
- routine 800 continues from operation 818 to operation 822 . If, at operation 816 , a family data structure is located in the array 502 having the specified GUID, the routine 800 continues to operation 822 .
- a new node 602 is created for the new protocol instance.
- the new node includes a pointer to the protocol interface for the protocol instance and the other pointers shown in and described above with respect to FIG. 6 .
- the new node is linked to the family data structure and the other sibling nodes in the linked list of nodes for the protocol family.
- the new node is also linked to the other nodes on the same device handle and to the device handle data structure.
- embodiments described herein provide methods, systems, apparatus, and computer-readable media for providing a device handle database during the DXE phase of an EFI.
- disclosure presented herein has been described in language specific to computer structural features, methodological acts and by computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific structures, acts or media described. Therefore, the specific structural features, acts and mediums are disclosed as exemplary embodiments implementing the claimed invention.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims (17)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/776,926 US7974987B1 (en) | 2006-07-28 | 2010-05-10 | Database for storing device handle data in an extensible firmware interface environment |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/495,215 US7743072B2 (en) | 2006-07-28 | 2006-07-28 | Database for storing device handle data in an extensible firmware interface environment |
US12/776,926 US7974987B1 (en) | 2006-07-28 | 2010-05-10 | Database for storing device handle data in an extensible firmware interface environment |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/495,215 Continuation US7743072B2 (en) | 2006-07-28 | 2006-07-28 | Database for storing device handle data in an extensible firmware interface environment |
Publications (1)
Publication Number | Publication Date |
---|---|
US7974987B1 true US7974987B1 (en) | 2011-07-05 |
Family
ID=38987784
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/495,215 Expired - Fee Related US7743072B2 (en) | 2006-07-28 | 2006-07-28 | Database for storing device handle data in an extensible firmware interface environment |
US12/776,926 Expired - Fee Related US7974987B1 (en) | 2006-07-28 | 2010-05-10 | Database for storing device handle data in an extensible firmware interface environment |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/495,215 Expired - Fee Related US7743072B2 (en) | 2006-07-28 | 2006-07-28 | Database for storing device handle data in an extensible firmware interface environment |
Country Status (1)
Country | Link |
---|---|
US (2) | US7743072B2 (en) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7558804B1 (en) | 2005-08-26 | 2009-07-07 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory |
US7743072B2 (en) * | 2006-07-28 | 2010-06-22 | American Megatrends, Inc. | Database for storing device handle data in an extensible firmware interface environment |
TWI374361B (en) * | 2007-01-16 | 2012-10-11 | Asustek Comp Inc | Computer and host device thereof and built-in flash memory storage device |
US8126927B1 (en) * | 2008-06-06 | 2012-02-28 | Amdocs Software Systems Limited | Data structure, method, and computer program for providing a linked list in a first dimension and a plurality of linked lists in a second dimension |
US8086838B2 (en) * | 2008-08-13 | 2011-12-27 | Dell Products L.P. | Methods and systems for providing manufacturing mode detection and functionality in a UEFI BIOS |
US8321656B2 (en) * | 2009-06-13 | 2012-11-27 | Phoenix Technologies Ltd. | Timer use in extensible firmware interface compliant systems |
JP5316432B2 (en) * | 2010-01-19 | 2013-10-16 | 富士通株式会社 | Network controller control method, program, and information processing apparatus |
WO2014150478A1 (en) * | 2013-03-15 | 2014-09-25 | Insyde Software Corp. | System and method for managing and diagnosing a computing device equipped with unified extensible firmware interface (uefi)-compliant firmware |
TWI492153B (en) * | 2013-07-11 | 2015-07-11 | Insyde Software Corp | System platform for supporting infrared receiver / transmitter and method of operation thereof |
US20160253501A1 (en) * | 2015-02-26 | 2016-09-01 | Dell Products, Lp | Method for Detecting a Unified Extensible Firmware Interface Protocol Reload Attack and System Therefor |
US11196832B2 (en) * | 2019-03-05 | 2021-12-07 | Dell Products L.P. | System and method for providing UEFI protocol access control |
US11514166B2 (en) * | 2020-10-20 | 2022-11-29 | Dell Products L.P. | Systems and methods to protect unified extensible firmware interface protocol serviceability |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020169979A1 (en) * | 2001-05-11 | 2002-11-14 | Zimmer Vincent J. | Hardened extensible firmware framework |
US6578131B1 (en) | 1999-04-27 | 2003-06-10 | Microsoft Corporation | Scaleable hash table for shared-memory multiprocessor system |
US6606628B1 (en) | 2000-02-14 | 2003-08-12 | Cisco Technology, Inc. | File system for nonvolatile memory |
US20030188173A1 (en) * | 2002-03-26 | 2003-10-02 | Zimmer Vincent J. | Hardened extended firmware interface framework |
US6948094B2 (en) | 2001-09-28 | 2005-09-20 | Intel Corporation | Method of correcting a machine check error |
US6988180B2 (en) * | 2003-09-29 | 2006-01-17 | Microsoft Corporation | Method and apparatus for lock-free, non-blocking hash table |
US7373366B1 (en) | 2005-06-10 | 2008-05-13 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for taking and managing snapshots of a storage volume |
US7555773B2 (en) | 2003-12-03 | 2009-06-30 | Intel Corporation | Methods and apparatus to provide a platform-level network security framework |
US7562200B1 (en) | 2005-06-10 | 2009-07-14 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for locking and synchronizing input/output operations in a data storage system |
US7743072B2 (en) * | 2006-07-28 | 2010-06-22 | American Megatrends, Inc. | Database for storing device handle data in an extensible firmware interface environment |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6775728B2 (en) * | 2001-11-15 | 2004-08-10 | Intel Corporation | Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework |
-
2006
- 2006-07-28 US US11/495,215 patent/US7743072B2/en not_active Expired - Fee Related
-
2010
- 2010-05-10 US US12/776,926 patent/US7974987B1/en not_active Expired - Fee Related
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578131B1 (en) | 1999-04-27 | 2003-06-10 | Microsoft Corporation | Scaleable hash table for shared-memory multiprocessor system |
US6606628B1 (en) | 2000-02-14 | 2003-08-12 | Cisco Technology, Inc. | File system for nonvolatile memory |
US20020169979A1 (en) * | 2001-05-11 | 2002-11-14 | Zimmer Vincent J. | Hardened extensible firmware framework |
US7260848B2 (en) * | 2001-05-11 | 2007-08-21 | Intel Corporation | Hardened extensible firmware framework |
US6948094B2 (en) | 2001-09-28 | 2005-09-20 | Intel Corporation | Method of correcting a machine check error |
US20030188173A1 (en) * | 2002-03-26 | 2003-10-02 | Zimmer Vincent J. | Hardened extended firmware interface framework |
US6988180B2 (en) * | 2003-09-29 | 2006-01-17 | Microsoft Corporation | Method and apparatus for lock-free, non-blocking hash table |
US7555773B2 (en) | 2003-12-03 | 2009-06-30 | Intel Corporation | Methods and apparatus to provide a platform-level network security framework |
US7373366B1 (en) | 2005-06-10 | 2008-05-13 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for taking and managing snapshots of a storage volume |
US7562200B1 (en) | 2005-06-10 | 2009-07-14 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for locking and synchronizing input/output operations in a data storage system |
US7743072B2 (en) * | 2006-07-28 | 2010-06-22 | American Megatrends, Inc. | Database for storing device handle data in an extensible firmware interface environment |
Non-Patent Citations (3)
Title |
---|
Specification entitled, Intel Platform Innovation Framework for EFI Driver Execution Environment Core Interface Specification (DXE CIS), dated Dec. 8, 2004, pp. 1-220, Vers 0.91. |
U.S. Notice of Allowance/Allowability dated Feb. 16, 2010 in U.S. Appl. No. 11/495,215. |
U.S. Official Action dated Sep. 18, 2009, in U.S. Appl. No. 11/495,215. |
Also Published As
Publication number | Publication date |
---|---|
US20080028200A1 (en) | 2008-01-31 |
US7743072B2 (en) | 2010-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7974987B1 (en) | Database for storing device handle data in an extensible firmware interface environment | |
US9395968B1 (en) | Uniquely identifying and validating computer system firmware | |
US7454547B1 (en) | Data exchange between a runtime environment and a computer firmware in a multi-processor computing system | |
US7134007B2 (en) | Method for sharing firmware across heterogeneous processor architectures | |
US7747848B1 (en) | Updating the system management information of a computer system | |
US8260818B1 (en) | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory | |
US8028155B1 (en) | Initiating an operating system boot from firmware | |
US20040230963A1 (en) | Method for updating firmware in an operating system agnostic manner | |
US8539214B1 (en) | Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware | |
Zimmer et al. | Beyond BIOS: developing with the unified extensible firmware interface | |
EP4002099B1 (en) | Firmware dependency checking and updating | |
US7797696B1 (en) | Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure | |
US7363480B1 (en) | Method, system, and computer-readable medium for updating the firmware of a computing device via a communications network | |
JPH11327919A (en) | Method and device for object-oriented interruption system | |
US20040268113A1 (en) | Virtual out-of-band management controller | |
US10402204B1 (en) | Multi-platform firmware support | |
US7921247B1 (en) | Sharing a dynamically located memory block between components executing in different processor modes in an extensible firmware interface environment | |
US10664598B1 (en) | Firmware security patch deployment | |
US7991785B1 (en) | Interface to a human interface infrastructure database in an extensible firmware interface environment | |
US11288078B1 (en) | Providing firmware specific information via ACPI tables | |
US20080270779A1 (en) | System management mode enhancements | |
US11106457B1 (en) | Updating firmware runtime components | |
US7873807B1 (en) | Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware | |
US9727390B1 (en) | Invoking a firmware function | |
US8078637B1 (en) | Memory efficient peim-to-peim interface database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: AMERICAN MEGATRENDS, INC., GEORGIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:POLYUDOV, FELIKS;REEL/FRAME:024363/0438 Effective date: 20060726 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
AS | Assignment |
Owner name: AMERICAN MEGATRENDS INTERNATIONAL, LLC, GEORGIA Free format text: ENTITY CONVERSION;ASSIGNOR:AMERICAN MEGATRENDS, INC.;REEL/FRAME:049091/0973 Effective date: 20190211 |
|
AS | Assignment |
Owner name: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT, MARYL Free format text: SECURITY INTEREST;ASSIGNOR:AMERICAN MEGATRENDS INTERNATIONAL, LLC;REEL/FRAME:049087/0266 Effective date: 20190401 Owner name: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT, MARYLAND Free format text: SECURITY INTEREST;ASSIGNOR:AMERICAN MEGATRENDS INTERNATIONAL, LLC;REEL/FRAME:049087/0266 Effective date: 20190401 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20230705 |
|
AS | Assignment |
Owner name: AMERICAN MEGATRENDS INTERNATIONAL, LLC, GEORGIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MIDCAP FINANCIAL TRUST;REEL/FRAME:069205/0795 Effective date: 20241017 |