If device paths are not correctly setup by the UEFI
implementation we may and up with a partition whose
parent is not the block device.

To make things easier do analyze add a debug message
EFIBLK %#02x %s is not a child device of %s

The output might look like this:

EFIBLK 0x80 /HD(1,MBR,0xa6d56afb,0x800,0x3f800)
is not a child device of
/HD(1,MBR,0xa6d56afb,0x800,0x3f800)

Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
---
 src/interface/efi/efi_block.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/interface/efi/efi_block.c b/src/interface/efi/efi_block.c
index c6445ab6..9a71fd08 100644
--- a/src/interface/efi/efi_block.c
+++ b/src/interface/efi/efi_block.c
@@ -554,6 +554,9 @@ static int efi_block_boot_image ( struct san_device 
*sandev, EFI_HANDLE handle,
        prefix_len = efi_devpath_len ( block->path );
        if ( memcmp ( path.path, block->path, prefix_len ) != 0 ) {
                /* Not a child device */
+               DBGC ( sandev, "EFIBLK %#02x %s is not a child device of %s\n",
+                      sandev->drive, efi_devpath_text ( path.path ),
+                      efi_devpath_text ( block->path ) );
                rc = -ENOTTY;
                goto err_not_child;
        }
-- 
2.14.2

_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to