summaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efi_driver.c
diff options
context:
space:
mode:
authorMichael Brown2014-07-08 02:02:35 +0200
committerMichael Brown2014-07-08 15:01:50 +0200
commit56b2f66dd2bcc5e6248d3652be051f20e604b7cc (patch)
treef94320969a0331e3e48302c62816e53607341d96 /src/interface/efi/efi_driver.c
parent[efi] Identify autoboot device by MAC address when chainloading (diff)
downloadipxe-56b2f66dd2bcc5e6248d3652be051f20e604b7cc.tar.gz
ipxe-56b2f66dd2bcc5e6248d3652be051f20e604b7cc.tar.xz
ipxe-56b2f66dd2bcc5e6248d3652be051f20e604b7cc.zip
[efi] Attempt to start only drivers claiming support for a device
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface/efi/efi_driver.c')
-rw-r--r--src/interface/efi/efi_driver.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/interface/efi/efi_driver.c b/src/interface/efi/efi_driver.c
index 8d0c9354..7d7d2059 100644
--- a/src/interface/efi/efi_driver.c
+++ b/src/interface/efi/efi_driver.c
@@ -269,6 +269,13 @@ efi_driver_start ( EFI_DRIVER_BINDING_PROTOCOL *driver __unused,
/* Try to start this device */
for_each_table_entry ( efidrv, EFI_DRIVERS ) {
+ if ( ( rc = efidrv->supported ( device ) ) != 0 ) {
+ DBGC ( device, "EFIDEV %p %s is not supported by "
+ "driver \"%s\": %s\n",
+ device, efi_devpath_text ( efidev->path ),
+ efidrv->name, strerror ( rc ) );
+ continue;
+ }
if ( ( rc = efidrv->start ( efidev ) ) == 0 ) {
efidev->driver = efidrv;
DBGC ( device, "EFIDRV %p %s using driver \"%s\"\n",