summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2014-07-31 13:28:26 +0200
committerMichael Brown2014-07-31 13:50:14 +0200
commit16d99cc8ef3b816072e78c2d640e193d0359163f (patch)
treed67c4ea6b805344e877259d15bb922f5d3c2ff85
parent[efi] Avoid unnecessarily passing pointers to EFI_HANDLEs (diff)
downloadipxe-16d99cc8ef3b816072e78c2d640e193d0359163f.tar.gz
ipxe-16d99cc8ef3b816072e78c2d640e193d0359163f.tar.xz
ipxe-16d99cc8ef3b816072e78c2d640e193d0359163f.zip
[efi] Dump existing openers when we are unable to open a protocol
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>
-rw-r--r--src/drivers/net/efi/snpnet.c2
-rw-r--r--src/interface/efi/efi_driver.c4
-rw-r--r--src/interface/efi/efi_file.c1
-rw-r--r--src/interface/efi/efi_pci.c1
4 files changed, 8 insertions, 0 deletions
diff --git a/src/drivers/net/efi/snpnet.c b/src/drivers/net/efi/snpnet.c
index acba3ed36..766eb42d2 100644
--- a/src/drivers/net/efi/snpnet.c
+++ b/src/drivers/net/efi/snpnet.c
@@ -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;
}
diff --git a/src/interface/efi/efi_driver.c b/src/interface/efi/efi_driver.c
index c67d6d650..715ec38b6 100644
--- a/src/interface/efi/efi_driver.c
+++ b/src/interface/efi/efi_driver.c
@@ -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;
diff --git a/src/interface/efi/efi_file.c b/src/interface/efi/efi_file.c
index aafc781af..06049fc95 100644
--- a/src/interface/efi/efi_file.c
+++ b/src/interface/efi/efi_file.c
@@ -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 );
diff --git a/src/interface/efi/efi_pci.c b/src/interface/efi/efi_pci.c
index 1cd4e63b2..785ed8911 100644
--- a/src/interface/efi/efi_pci.c
+++ b/src/interface/efi/efi_pci.c
@@ -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;
}