Extensible Firmware Interface Specification
2-26 12/01/02 Version 1.10
OM13154
Optional
Child Device Handle
EFI_DEVICE_PATH_PROTOCOL
EFI_XYZ_I/O_PROTOCOL
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
Figure 2-13. Child Device Handle with a Bus Specific Override
2.5.6 Platform Components
Under the EFI Driver Model, the act of connecting and disconnecting drivers from controllers in a
platform is under the platform firmware’s control. This will typically be implemented as part of the
EFI Boot Manager, but other implementations are possible. The boot services
ConnectController()
and DisconnectController() canbeusedbytheplatform
firmware to determine which controllers get started and which ones do not. If the platform wishes
to perform system diagnostics or install an operating system, then it may choose to connect drivers
to all possible boot devices. If a platform wishes to boot a preinstalled operating system, it may
choose to only connect drivers to the devices that are required to boot the selected operating
system. The EFI Driver Model supports both these modes of operation through the boot services
ConnectController() and DisconnectController(). In addition, since the platform
component that is in charge of booting the platform has to work with device paths for console
devices and boot options, all of the services and protocols involved in the EFI Driver Model are
optimized with device paths in mind.
Since the platform firmware may choose to only connect the devices required to produce consoles
and gain access to a boot device, the OS present device drivers cannot assume that an EFI driver for
a device has been executed. The presence of an EFI driver in the system firmware or in an option
ROM does not guarantee that the EFI driver will be loaded, executed, or allowed to manage any
devices in a platform. All OS present device drivers must be able to handle devices that have been
managed by an EFI driver and devices that have not been managed by an EFI driver.
The platform may also choose to produce a protocol named the Platform Driver Override Protocol.
This is similar to the Bus Specific Driver Override Protocol, but it has higher priority. This gives
the platform firmware the highest priority when deciding which drivers are connected to which
controllers. The Platform Driver Override Protocol is attached to a handle in the system. The boot
service ConnectController() will make use of this protocol if it is present in the system.