summaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efi_block.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/efi/efi_block.c')
-rw-r--r--src/interface/efi/efi_block.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/interface/efi/efi_block.c b/src/interface/efi/efi_block.c
index cb73260d5..da9062105 100644
--- a/src/interface/efi/efi_block.c
+++ b/src/interface/efi/efi_block.c
@@ -57,6 +57,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/efi/efi_path.h>
#include <ipxe/efi/efi_null.h>
#include <ipxe/efi/efi_block.h>
+#include <usr/efiboot.h>
/** ACPI table protocol protocol */
static EFI_ACPI_TABLE_PROTOCOL *acpi;
@@ -630,7 +631,12 @@ static int efi_block_boot ( unsigned int drive, const char *filename ) {
sandev = sandev_find ( drive );
if ( ! sandev ) {
DBG ( "EFIBLK cannot find drive %#02x\n", drive );
- rc = -ENODEV;
+ DBG ( "EFIBLK attempting local boot for drive %#02x, "
+ "filename=%s\n", drive, filename );
+ rc = efi_boot_local( drive, filename );
+ if (rc)
+ rc = -ENODEV;
+
goto err_sandev_find;
}