3.15.10 Boot Manager Driver List Processing

The platform boot manager loads the drivers that are specified by the DriverOrder and Driver#### environment variables. These environment variables are discussed in more detail in the Boot Manager chapter of the UEFI Specification.

Before the platform boot manager loads each driver, it uses the device path stored in the Driver#### variable to connect the controllers and drivers that are required to access the driver option. This process is exactly the same as the process used for the console variables ErrOut, ConOut, and ConIn.

If any driver in the DriverOrder list has a load attribute of LOAD_OPTION_FORCE_RECONNECT, then the platform boot manager uses the DisconnectController() and

ConnectController() boot services to disconnect and reconnect all the drivers in the platform. This load attribute allows the newly loaded drivers to be considered in the driver connection process.

For example, if no driver in the DriverOrder list has the LOAD_OPTION_FORCE_RECONNECT load attribute, then it would be possible for a built-in system driver with a lower version number to manage a device. Then, after loading a newer driver with a higher version number from the DriverOrder list, the driver with the lower version number is still managing the same device.

However, if the newer driver in the DriverOrder list has a load attribute of LOAD_OPTION_FORCE_RECONNECT, then the platform boot manager disconnects and reconnects all the controllers, so the driver with the highest version number manages the same device that the lower versioned driver used to manage. Drivers that are added to the DriverOrder list should not set the LOAD_OPTION_FORCE_RECONNECT attribute unless they have to because the disconnect and reconnect process increases the boot time.