In general, when UEFI DXE Core dispatcher starts to load DXE and UEFI drivers,
BIOS sends out generic post code for each DXE/UEFI drivers.
After a UEFI driver is loaded via the boot services, this UEFI driver can be started
anywhere to connect from a controller. This UEFI driver can be stopped to
disconnect from a controller as well.
Basically, BIOS has no way to issue post code when starting/stopping a UEFI driver,
especially UEFI driver is protected in binary format. Once system gets hang up
problem when starting/stopping UEFI driver, it is hard to identify the problem root
UEFI defines Component Name protocol and Load Image protocol. Both can be
used to get a readable name and a globally unique ID (GUID) of a UEFI driver.
Before starting a UEFI driver on a controller, BIOS can read driver name and driver
GUID in advance and store them into ECMOS.
After the call complete of starting a UEFI driver, both UEFI driver name and GUID
will be cleared from ECMOS.
Once the call of starting a UEFI driver doesn’t complete, BIOS keeps ECMOS
content for UEFI driver name and GUID.
In next boot, BIOS can issue a private WMI command to read UEFI post error code from ECMOS and reports it to windows application for record. After that, BIOS can issue a private WMI command to clear UEFI post error code from ECMOS.
Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 4.0 License.
INC, HP, "POST ERROR INDICATION IN UEFI DRIVER MODEL DRIVERS", Technical Disclosure Commons, (October 29, 2019)