On 18/09/14 14:33, NICOLAS CATTIE wrote:
I'm using the bin-x86_64-efi/snponly.efi version

The debug message (just after the download "...ok" message) is : EFIIMAGE 
0xb815d048 could not boot: Error 0x 7f048182

That's not a message which can be generated by iPXE:

$ git grep EFIIMAGE
image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not identify SNP device\n", image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not install file protocol: " image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not install iPXE download " image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not create device path\n", image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not create command line\n", image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not load: %s\n", image/efi_image.c: DBGC ( image, "EFIIMAGE %p filling in missing DeviceHandle\n", image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not start (or returned with " image/efi_image.c: DBGC ( image, "EFIIMAGE %p could not load: %s\n",

I'm assuming the message was "EFIIMAGE 0xb815d048 could not load: Error 0x7f048182", since you said that it was generated from the "kernel" command (rather than the "boot" command), and there should be only one possible error message on that code path.

The error is EFI_INVALID_PARAMETER. It's plausible that the platform firmware is complaining about our NULL parameter for DevicePath. Could you try the attached patch, which provides a dummy empty device path?

Thanks,

Michael
diff --git a/src/image/efi_image.c b/src/image/efi_image.c
index 83da9d9..b7d8f9c 100644
--- a/src/image/efi_image.c
+++ b/src/image/efi_image.c
@@ -280,12 +280,17 @@ static int efi_image_exec ( struct image *image ) {
  */
 static int efi_image_probe ( struct image *image ) {
 	EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
+	static EFI_DEVICE_PATH_PROTOCOL empty_path = {
+		.Type = END_DEVICE_PATH_TYPE,
+		.SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE,
+		.Length[0] = sizeof ( empty_path ),
+	};
 	EFI_HANDLE handle;
 	EFI_STATUS efirc;
 	int rc;
 
 	/* Attempt loading image */
-	if ( ( efirc = bs->LoadImage ( FALSE, efi_image_handle, NULL,
+	if ( ( efirc = bs->LoadImage ( FALSE, efi_image_handle, &empty_path,
 				       user_to_virt ( image->data, 0 ),
 				       image->len, &handle ) ) != 0 ) {
 		/* Not an EFI image */
_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to