mirror of
https://github.com/ipxe/ipxe
synced 2025-12-30 13:11:11 +03:00
[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>
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user