From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heinrich Schuchardt Date: Sat, 9 May 2020 11:58:17 +0200 Subject: [PATCH 4/6] cmd: efidebug: Add support for querying UEFI variable storage In-Reply-To: <20200506191246.237790-5-ilias.apalodimas@linaro.org> References: <20200506191246.237790-1-ilias.apalodimas@linaro.org> <20200506191246.237790-5-ilias.apalodimas@linaro.org> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > 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( >