3.15.9 Boot Manager Connect All Processing

On some platforms, the boot manager may connect all drivers to all devices at this point in the platform initialization sequence. However, platform firmware can choose to connect the minimum number of drivers and devices that is required to establish consoles and gain access to the boot device. Performing the minimum amount of work is recommended to enable shorter boot times.

If the platform firmware chooses to go into a "platform configuration" mode, then all the drivers should be connected to all devices. The platform follows the following sequence:

  1. A search is made of the handle database for all root controller handles. These handles do not have a Driver Binding Protocol or the Loaded Image Protocol. They have a Device Path Protocol, and no parent controllers.
  2. ConnectController() is called with the Recursive flag set to TRUE and a RemainingDevicePath of NULL for each of the root controllers. These settings cause all children to be produced by all bus drivers.
  3. As each bus is expanded, and if the bus supports storage devices for UEFI drivers, additional UEFI drivers are then loaded from those storage devices (for example, option ROMs on PCI adapters).
  4. This process is recursive. Each time a child handle is created, ConnectController() is called again on that child handle, so all of those handle's children are produced.
  5. When the process is complete, the entire tree of boot devices in the system hierarchy is present in the handle database.