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