summaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efiprefix.c
diff options
context:
space:
mode:
authorMichael Brown2020-11-30 18:08:58 +0100
committerMichael Brown2020-11-30 20:34:57 +0100
commit63625b43e9009833183f1921ed3753ba35d9261f (patch)
treec34e2b8b2b382b96e4d2ca6131a20be000942551 /src/interface/efi/efiprefix.c
parent[efi] Provide manufacturer and driver names to all veto checking methods (diff)
downloadipxe-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.c4
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();