diff options
author | Michael Brown | 2020-11-30 18:08:58 +0100 |
---|---|---|
committer | Michael Brown | 2020-11-30 20:34:57 +0100 |
commit | 63625b43e9009833183f1921ed3753ba35d9261f (patch) | |
tree | c34e2b8b2b382b96e4d2ca6131a20be000942551 /src/interface/efi/efiprefix.c | |
parent | [efi] Provide manufacturer and driver names to all veto checking methods (diff) | |
download | ipxe-63625b43e9009833183f1921ed3753ba35d9261f.tar.gz ipxe-63625b43e9009833183f1921ed3753ba35d9261f.tar.xz ipxe-63625b43e9009833183f1921ed3753ba35d9261f.zip |
[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>
Diffstat (limited to 'src/interface/efi/efiprefix.c')
-rw-r--r-- | src/interface/efi/efiprefix.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/interface/efi/efiprefix.c b/src/interface/efi/efiprefix.c index 14f36661..3273b79d 100644 --- a/src/interface/efi/efiprefix.c +++ b/src/interface/efi/efiprefix.c @@ -79,8 +79,8 @@ EFI_STATUS EFIAPI _efi_start ( EFI_HANDLE image_handle, */ static int efi_probe ( struct root_device *rootdev __unused ) { - /* Unloaded any vetoed drivers */ - efi_veto_unload(); + /* Remove any vetoed drivers */ + efi_veto(); /* Connect our drivers */ return efi_driver_connect_all(); |