I think it would be better if we had a table of strings with the
textual representation of all UEFI status codes and have that printed
instead of unreadable hex salad.

Mate

On Fri, Apr 25, 2025 at 1:18 PM khaliid caliy <khaliidca...@gmail.com> wrote:
>
> This patch addresses some undescriptive error messages that grub
> chainloader command returns when issue encountered, specifically
> during the loading of the uefi image or starting the image.
>
> As per uefi UEFI specification (2.11) boot service functions
> `StartImage()` and `LoadImage` return error codes that describe the
> issue happened, which the command didn't check and suppressed it. The
> current implementation of the command prints some generic error
> messages like "unknown error", "cannot load image". Which doesn't tell
> much of the nature of the issue and what happened.
>
> So my patch addresses the command error message and prints the error
> based on the return value of the functions or else prints the status
> code returned by the functions.
>
> diff --git a/grub-core/loader/efi/chainloader.c
> b/grub-core/loader/efi/chainloader.c
> index 869307bf3..c0ef37489 100644
> --- a/grub-core/loader/efi/chainloader.c
> +++ b/grub-core/loader/efi/chainloader.c
> @@ -91,7 +91,7 @@ grub_chainloader_boot (void *context)
>            }
>        }
>       else
> -       grub_error (GRUB_ERR_BAD_OS, "unknown error");
> +       grub_error (GRUB_ERR_BAD_OS, "cannot start image 0x%"
> PRIxGRUB_EFI_UINTN_T, status);
>     }
>
>   if (exit_data)
> @@ -346,8 +346,12 @@ grub_cmd_chainloader (grub_command_t cmd
> __attribute__ ((unused)),
>     {
>       if (status == GRUB_EFI_OUT_OF_RESOURCES)
>        grub_error (GRUB_ERR_OUT_OF_MEMORY, "out of resources");
> +      else if (status == GRUB_EFI_UNSUPPORTED)
> +       grub_error(GRUB_ERR_BAD_OS, "image is not supported");
> +      else if (status == GRUB_EFI_INVALID_PARAMETER)
> +       grub_error(GRUB_ERR_BAD_ARGUMENT, "invalid argument");
>       else
> -       grub_error (GRUB_ERR_BAD_OS, "cannot load image");
> +       grub_error (GRUB_ERR_BAD_OS, "cannot load image 0x%"
> PRIxGRUB_EFI_UINTN_T, status);
>
>       goto fail;
>     }
>
> Checking error messages is important and may save time for users or
> professionals. So please let me know for any improvement, adjustment
> or any other feedback.
>
> Thanks best regards khaalid
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to