On 5/6/20 9:12 PM, Ilias Apalodimas wrote:
> With the previous patches that use OP-TEE and StandAloneMM for UEFI
> variable storage we've added functionality for efi_query_variable_info.
> So let's add the relevant command to efidebug and retrieve information
> about the container used to store UEFI variables
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>
> ---
>  cmd/efidebug.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 44 insertions(+), 1 deletion(-)
>
> diff --git a/cmd/efidebug.c b/cmd/efidebug.c
> index d8a76d78a388..17e36ef76d69 100644
> --- a/cmd/efidebug.c
> +++ b/cmd/efidebug.c
> @@ -1160,6 +1160,45 @@ static int do_efi_test(cmd_tbl_t *cmdtp, int flag,
>       return cp->cmd(cmdtp, flag, argc, argv);
>  }
>
> +/**
> + * do_efi_query_info() - QueryVariableInfo EFI service
> + *
> + * @cmdtp:   Command table
> + * @flag:    Command flag
> + * @argc:    Number of arguments
> + * @argv:    Argument array
> + * Return:   CMD_RET_SUCCESS on success,
> + *           CMD_RET_USAGE or CMD_RET_FAILURE on failure
> + *
> + * Implement efidebug "test" sub-command.
> + */
> +
> +static int do_efi_query_info(cmd_tbl_t *cmdtp, int flag,
> +                          int argc, char * const argv[])
> +{
> +     efi_status_t ret;
> +     u32 attr = EFI_VARIABLE_BOOTSERVICE_ACCESS |
> +                     EFI_VARIABLE_RUNTIME_ACCESS |
> +                     EFI_VARIABLE_NON_VOLATILE;
> +     u64 max_variable_storage_size;
> +     u64 remain_variable_storage_size;
> +     u64 max_variable_size;
> +
> +     ret = EFI_CALL(efi_query_variable_info(attr,
> +                                            &max_variable_storage_size,
> +                                            &remain_variable_storage_size,
> +                                            &max_variable_size));
> +     if (ret != EFI_SUCCESS)
> +             return CMD_RET_FAILURE;
> +
> +     printf("%.*s ====================\n", EFI_HANDLE_WIDTH, sep);

We are not printing handles. Please remove the line.

> +     printf("Max storage size %llu\n", max_variable_storage_size);
> +     printf("Remaining storage size %llu\n", remain_variable_storage_size);
> +     printf("Max variable size %llu\n", max_variable_size);
> +
> +     return CMD_RET_SUCCESS;
> +}
> +
>  static cmd_tbl_t cmd_efidebug_sub[] = {
>       U_BOOT_CMD_MKENT(boot, CONFIG_SYS_MAXARGS, 1, do_efi_boot_opt, "", ""),
>       U_BOOT_CMD_MKENT(devices, CONFIG_SYS_MAXARGS, 1, do_efi_show_devices,
> @@ -1176,6 +1215,8 @@ static cmd_tbl_t cmd_efidebug_sub[] = {
>                        "", ""),
>       U_BOOT_CMD_MKENT(test, CONFIG_SYS_MAXARGS, 1, do_efi_test,
>                        "", ""),
> +     U_BOOT_CMD_MKENT(query, CONFIG_SYS_MAXARGS, 1, do_efi_query_info,
> +                      "", ""),
>  };
>
>  /**
> @@ -1247,7 +1288,9 @@ static char efidebug_help_text[] =
>       "efidebug tables\n"
>       "  - show UEFI configuration tables\n"
>       "efidebug test bootmgr\n"
> -     "  - run simple bootmgr for test\n";
> +     "  - run simple bootmgr for test\n"
> +     "efidebug query\n"
> +     "  - show information of the container used to store UEFI variables\n";

This text does not make it clear that we will get size information. How
about:

"show size of UEFI variables store\n"

Best regards

Heinrich

>  #endif
>
>  U_BOOT_CMD(
>

Reply via email to