4.2.1 Never Assume all UEFI Drivers are Executed

Typically, the same vendor that produces a UEFI driver also produces an OS-present driver for all the operating systems that the vendor chooses to support. Because UEFI provides a mechanism to reduce the boot time by running the minimum set of drivers that are required to connect the console and boot devices, not all UEFI drivers may be executed on every boot. For example, the system may have three SCSI cards but it only needs to install the driver on one SCSI bus in order to boot the OS.

This minimum set of drivers means that the OS-present driver may be handed a controller that may be in several different states. It may still be in the power-on reset state, it may have been managed by a UEFI driver for a short period of time and released, or it may have been managed by a UEFI driver right up to the point in time where firmware hands control of the platform to the operating system.

The OS-present driver must accept controllers in all of these states. This acceptance requires the OS-present driver to make very few assumptions about the state of the controller it manages.


Note: OS drivers shall not make assumptions that the UEFI driver has initialized or configured the device in any way.


Note: I/O hot-plug does not involve UEFI driver execution, so the OS driver must be able to initialize and operate the driver without UEFI support.