]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[efi] Allow vetoing of drivers that cannot be unloaded
authorMichael Brown <mcb30@ipxe.org>
Mon, 30 Nov 2020 17:08:58 +0000 (17:08 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 30 Nov 2020 19:34:57 +0000 (19:34 +0000)
commit63625b43e9009833183f1921ed3753ba35d9261f
treec34e2b8b2b382b96e4d2ca6131a20be000942551
parent354c252ee19ff32986f8af0cb80e171202741a20
[efi] Allow vetoing of drivers that cannot be unloaded

Some UEFI drivers (observed with the "Usb Xhci Driver" on an HP
EliteBook) are particularly badly behaved: they cannot be unloaded and
will leave handles opened with BY_DRIVER attributes even after
disconnecting the driver, thereby preventing a replacement iPXE driver
from opening the handle.

Allow such drivers to be vetoed by falling back to a brute-force
mechanism that will disconnect the driver from all handles, uninstall
the driver binding protocol (to prevent it from attaching to any new
handles), and finally close any stray handles that the vetoed driver
has left open.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/include/ipxe/efi/efi_veto.h
src/interface/efi/efi_veto.c
src/interface/efi/efiprefix.c