summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2020-10-02 00:23:10 +0200
committerMichael Brown2020-10-02 01:36:33 +0200
commitc70b3e04e86cefca335e36f883829d89583a6921 (patch)
tree5e6c2e3c67ce11cc01b457c2d1f554e954fbc74c
parent[efi] Connect controllers after loading an EFI driver (diff)
downloadipxe-c70b3e04e86cefca335e36f883829d89583a6921.tar.gz
ipxe-c70b3e04e86cefca335e36f883829d89583a6921.tar.xz
ipxe-c70b3e04e86cefca335e36f883829d89583a6921.zip
[efi] Always enable recursion when calling ConnectController()
There appears to be no reason for avoiding recursion when calling ConnectController(), and recursion provides the least surprising behaviour. Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/interface/efi/efi_block.c2
-rw-r--r--src/interface/efi/efi_driver.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/interface/efi/efi_block.c b/src/interface/efi/efi_block.c
index 64d1e198..0024fbbe 100644
--- a/src/interface/efi/efi_block.c
+++ b/src/interface/efi/efi_block.c
@@ -237,7 +237,7 @@ static void efi_block_connect ( struct san_device *sandev ) {
/* Try to connect all possible drivers to this block device */
if ( ( efirc = bs->ConnectController ( block->handle, NULL,
- NULL, 1 ) ) != 0 ) {
+ NULL, TRUE ) ) != 0 ) {
rc = -EEFI ( efirc );
DBGC ( sandev, "EFIBLK %#02x could not connect drivers: %s\n",
sandev->drive, strerror ( rc ) );
diff --git a/src/interface/efi/efi_driver.c b/src/interface/efi/efi_driver.c
index 760ee41a..a6c0f303 100644
--- a/src/interface/efi/efi_driver.c
+++ b/src/interface/efi/efi_driver.c
@@ -470,7 +470,7 @@ static int efi_driver_connect ( EFI_HANDLE device ) {
DBGC ( device, "EFIDRV %s connecting new drivers\n",
efi_handle_name ( device ) );
if ( ( efirc = bs->ConnectController ( device, drivers, NULL,
- FALSE ) ) != 0 ) {
+ TRUE ) ) != 0 ) {
rc = -EEFI_CONNECT ( efirc );
DBGC ( device, "EFIDRV %s could not connect new drivers: "
"%s\n", efi_handle_name ( device ), strerror ( rc ) );
@@ -520,7 +520,7 @@ static int efi_driver_reconnect ( EFI_HANDLE device ) {
EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
/* Reconnect any available driver */
- bs->ConnectController ( device, NULL, NULL, FALSE );
+ bs->ConnectController ( device, NULL, NULL, TRUE );
return 0;
}