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.