]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[efi] Dump existing openers when we are unable to open a protocol
authorMichael Brown <mcb30@ipxe.org>
Thu, 31 Jul 2014 11:28:26 +0000 (12:28 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 31 Jul 2014 11:50:14 +0000 (12:50 +0100)
Dump the existing openers of a protocol whenever we are unable to open
a protocol using attributes of BY_DEVICE, EXCLUSIVE, or
BY_CHILD_CONTROLLER.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/efi/snpnet.c
src/interface/efi/efi_driver.c
src/interface/efi/efi_file.c
src/interface/efi/efi_pci.c

index acba3ed36ebfe6d014c68cc69c0283ebf0c672db..766eb42d21d65af7b99e610e49a4458371caecdf 100644 (file)
@@ -407,6 +407,8 @@ int snpnet_start ( struct efi_device *efidev ) {
                rc = -EEFI ( efirc );
                DBGC ( device, "SNP %p %s cannot open SNP protocol: %s\n",
                       device, efi_handle_name ( device ), strerror ( rc ) );
+               DBGC_EFI_OPENERS ( device, device,
+                                  &efi_simple_network_protocol_guid );
                goto err_open_protocol;
        }
 
index c67d6d6501553a59e988478e3241beee82101919..715ec38b6c8bae33a1a787095f4237db7d79afbe 100644 (file)
@@ -137,6 +137,8 @@ int efidev_child_add ( struct efi_device *efidev, EFI_HANDLE device ) {
                       efidev->device, efi_handle_name ( efidev->device ) );
                DBGC ( efidev->device, " %p %s: %s\n", device,
                       efi_handle_name ( device ), strerror ( rc ) );
+               DBGC_EFI_OPENERS ( efidev->device, efidev->device,
+                                  &efi_device_path_protocol_guid );
                return rc;
        }
 
@@ -264,6 +266,8 @@ efi_driver_start ( EFI_DRIVER_BINDING_PROTOCOL *driver __unused,
                DBGC ( device, "EFIDRV %p %s could not open device path: %s\n",
                       device, efi_handle_name ( device ),
                       strerror ( rc ) );
+               DBGC_EFI_OPENERS ( device, device,
+                                  &efi_device_path_protocol_guid );
                goto err_no_device_path;
        }
        efidev->path = devpath.devpath;
index aafc781afe27b6cdda6c2e576a58465881972332..06049fc95fd86953b7c36da698981e36ab5094e0 100644 (file)
@@ -631,6 +631,7 @@ int efi_file_install ( EFI_HANDLE handle ) {
                rc = -EEFI ( efirc );
                DBGC ( handle, "Could not open disk I/O protocol: %s\n",
                       strerror ( rc ) );
+               DBGC_EFI_OPENERS ( handle, handle, &efi_disk_io_protocol_guid );
                goto err_open;
        }
        assert ( diskio.diskio == &efi_disk_io_protocol );
index 1cd4e63b253f45c3e2d223380ab78fcc012acf01..785ed8911fbed2c614c81fd4d9c217c35ff42628 100644 (file)
@@ -292,6 +292,7 @@ static int efipci_start ( struct efi_device *efidev ) {
                                  pci ) ) != 0 ) {
                DBGC ( device, "EFIPCI %p %s could not open PCI device: %s\n",
                       device, efi_handle_name ( device ), strerror ( rc ) );
+               DBGC_EFI_OPENERS ( device, device, &efi_pci_io_protocol_guid );
                goto err_open;
        }