Skip to content

Commit

Permalink
[efi] Continue to connect remaining handles after connection errors
Browse files Browse the repository at this point in the history
Some UEFI BIOSes will deliberately break the implementation of
ConnectController() to return errors for devices that have been
"disabled" via the BIOS setup screen.  (As an added bonus, such BIOSes
may return garbage EFI_STATUS values such as 0xff.)

Work around these broken UEFI BIOSes by ignoring failures and
continuing to attempt to connect any remaining handles.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Sep 13, 2017
1 parent 9720f83 commit d46c53c
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/interface/efi/efi_driver.c
Expand Up @@ -497,14 +497,16 @@ static int efi_driver_handles ( int ( * method ) ( EFI_HANDLE handle ) ) {

/* Connect/disconnect driver from all handles */
for ( i = 0 ; i < num_handles ; i++ ) {
if ( ( rc = method ( handles[i] ) ) != 0 )
goto err_method;
if ( ( rc = method ( handles[i] ) ) != 0 ) {
/* Ignore errors and continue to process
* remaining handles.
*/
}
}

/* Success */
rc = 0;

err_method:
bs->FreePool ( handles );
err_locate:
return rc;
Expand Down

0 comments on commit d46c53c

Please sign in to comment.