[PATCH 0/4] efi_loader: simplify efidebug implementation

This series contains several patches reducing the code size of the efidebug command implementation.
Heinrich Schuchardt (4): efi_loader: simplify show_efi_boot_opt_data() efi_loader: simplify show_efi_boot_order() efi_loader: use efi_create_indexed_name() efi_loader: simplify accessing variables
cmd/efidebug.c | 96 +++++++++++++++++--------------------------------- 1 file changed, 33 insertions(+), 63 deletions(-)
-- 2.30.2

To print a UTF-16 string use %ls instead of converting string to UTF-8.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- cmd/efidebug.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 0bf7b8856c..9444eca49c 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -1147,8 +1147,6 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) { struct efi_device_path *initrd_path = NULL; struct efi_load_option lo; - char *label, *p; - size_t label_len16, label_len; u16 *dp_str; efi_status_t ret; efi_uintn_t initrd_dp_size; @@ -1160,14 +1158,6 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) return; }
- label_len16 = u16_strlen(lo.label); - label_len = utf16_utf8_strnlen(lo.label, label_len16); - label = malloc(label_len + 1); - if (!label) - return; - p = label; - utf16_utf8_strncpy(&p, lo.label, label_len16); - printf("%ls:\nattributes: %c%c%c (0x%08x)\n", varname16, /* ACTIVE */ @@ -1177,7 +1167,7 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) /* HIDDEN */ lo.attributes & LOAD_OPTION_HIDDEN ? 'H' : '-', lo.attributes); - printf(" label: %s\n", label); + printf(" label: %ls\n", lo.label);
dp_str = efi_dp_str(lo.file_path); printf(" file_path: %ls\n", dp_str); @@ -1194,7 +1184,6 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) printf(" data:\n"); print_hex_dump(" ", DUMP_PREFIX_OFFSET, 16, 1, lo.optional_data, *size, true); - free(label); }
/** -- 2.30.2

On Mon, May 24, 2021 at 11:56:53AM +0200, Heinrich Schuchardt wrote:
To print a UTF-16 string use %ls instead of converting string to UTF-8.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
cmd/efidebug.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 0bf7b8856c..9444eca49c 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -1147,8 +1147,6 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) { struct efi_device_path *initrd_path = NULL; struct efi_load_option lo;
- char *label, *p;
- size_t label_len16, label_len; u16 *dp_str; efi_status_t ret; efi_uintn_t initrd_dp_size;
@@ -1160,14 +1158,6 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) return; }
- label_len16 = u16_strlen(lo.label);
- label_len = utf16_utf8_strnlen(lo.label, label_len16);
- label = malloc(label_len + 1);
- if (!label)
return;
- p = label;
- utf16_utf8_strncpy(&p, lo.label, label_len16);
- printf("%ls:\nattributes: %c%c%c (0x%08x)\n", varname16, /* ACTIVE */
@@ -1177,7 +1167,7 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) /* HIDDEN */ lo.attributes & LOAD_OPTION_HIDDEN ? 'H' : '-', lo.attributes);
- printf(" label: %s\n", label);
printf(" label: %ls\n", lo.label);
dp_str = efi_dp_str(lo.file_path); printf(" file_path: %ls\n", dp_str);
@@ -1194,7 +1184,6 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) printf(" data:\n"); print_hex_dump(" ", DUMP_PREFIX_OFFSET, 16, 1, lo.optional_data, *size, true);
- free(label);
}
/**
2.30.2
Reviewed-by: Ilias Apalodimas ilias.apalodimas@linaro.org

To print a UTF-16 string use %ls instead of converting string to UTF-8.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- cmd/efidebug.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 9444eca49c..4c0facd26c 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -1317,8 +1317,6 @@ static int show_efi_boot_order(void) u16 var_name16[9], *p16; void *data; struct efi_load_option lo; - char *label, *p; - size_t label_len16, label_len; efi_status_t ret;
size = 0; @@ -1380,18 +1378,7 @@ static int show_efi_boot_order(void) goto out; }
- label_len16 = u16_strlen(lo.label); - label_len = utf16_utf8_strnlen(lo.label, label_len16); - label = malloc(label_len + 1); - if (!label) { - free(data); - ret = CMD_RET_FAILURE; - goto out; - } - p = label; - utf16_utf8_strncpy(&p, lo.label, label_len16); - printf("%2d: %s: %s\n", i + 1, var_name, label); - free(label); + printf("%2d: %s: %ls\n", i + 1, var_name, lo.label);
free(data); } -- 2.30.2

On Mon, May 24, 2021 at 11:56:54AM +0200, Heinrich Schuchardt wrote:
To print a UTF-16 string use %ls instead of converting string to UTF-8.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
cmd/efidebug.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 9444eca49c..4c0facd26c 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -1317,8 +1317,6 @@ static int show_efi_boot_order(void) u16 var_name16[9], *p16; void *data; struct efi_load_option lo;
char *label, *p;
size_t label_len16, label_len; efi_status_t ret;
size = 0;
@@ -1380,18 +1378,7 @@ static int show_efi_boot_order(void) goto out; }
label_len16 = u16_strlen(lo.label);
label_len = utf16_utf8_strnlen(lo.label, label_len16);
label = malloc(label_len + 1);
if (!label) {
free(data);
ret = CMD_RET_FAILURE;
goto out;
}
p = label;
utf16_utf8_strncpy(&p, lo.label, label_len16);
printf("%2d: %s: %s\n", i + 1, var_name, label);
free(label);
printf("%2d: %s: %ls\n", i + 1, var_name, lo.label);
free(data); }
-- 2.30.2
Reviewed-by: Ilias Apalodimas ilias.apalodimas@linaro.org

Simplify the creation of indexed variable names like 'Boot0000' by using function efi_create_indexed_name().
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- cmd/efidebug.c | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 4c0facd26c..9c3ba73d61 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -227,8 +227,7 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, { int capsule_id; char *endp; - char var_name[12]; - u16 var_name16[12], *p; + u16 var_name16[12]; efi_guid_t guid; struct efi_capsule_result_variable_header *result = NULL; efi_uintn_t size; @@ -259,9 +258,8 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, if (capsule_id < 0 || capsule_id > 0xffff) return CMD_RET_USAGE;
- sprintf(var_name, "Capsule%04X", capsule_id); - p = var_name16; - utf8_utf16_strncpy(&p, var_name, 9); + efi_create_indexed_name(var_name16, sizeof(var_name16), + "Capsule", capsule_id); }
size = 0; @@ -954,8 +952,7 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, { int id; char *endp; - char var_name[9]; - u16 var_name16[9], *p; + u16 var_name16[9]; efi_guid_t guid; size_t label_len, label_len16; u16 *label; @@ -988,9 +985,8 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, if (*endp != '\0' || id > 0xffff) return CMD_RET_USAGE;
- sprintf(var_name, "Boot%04X", id); - p = var_name16; - utf8_utf16_strncpy(&p, var_name, 9); + efi_create_indexed_name(var_name16, sizeof(var_name16), + "Boot", id);
/* label */ label_len = strlen(argv[2]); @@ -1107,8 +1103,7 @@ static int do_efi_boot_rm(struct cmd_tbl *cmdtp, int flag, efi_guid_t guid; int id, i; char *endp; - char var_name[9]; - u16 var_name16[9], *p; + u16 var_name16[9]; efi_status_t ret;
if (argc == 1) @@ -1120,10 +1115,8 @@ static int do_efi_boot_rm(struct cmd_tbl *cmdtp, int flag, if (*endp != '\0' || id > 0xffff) return CMD_RET_FAILURE;
- sprintf(var_name, "Boot%04X", id); - p = var_name16; - utf8_utf16_strncpy(&p, var_name, 9); - + efi_create_indexed_name(var_name16, sizeof(var_name16), + "Boot", id); ret = EFI_CALL(efi_set_variable(var_name16, &guid, 0, 0, NULL)); if (ret) { printf("Cannot remove %ls\n", var_name16); @@ -1313,8 +1306,7 @@ static int show_efi_boot_order(void) u16 *bootorder; efi_uintn_t size; int num, i; - char var_name[9]; - u16 var_name16[9], *p16; + u16 var_name16[9]; void *data; struct efi_load_option lo; efi_status_t ret; @@ -1344,16 +1336,15 @@ static int show_efi_boot_order(void)
num = size / sizeof(u16); for (i = 0; i < num; i++) { - sprintf(var_name, "Boot%04X", bootorder[i]); - p16 = var_name16; - utf8_utf16_strncpy(&p16, var_name, 9); + efi_create_indexed_name(var_name16, sizeof(var_name16), + "Boot", i);
size = 0; ret = EFI_CALL(efi_get_variable(var_name16, &efi_global_variable_guid, NULL, &size, NULL)); if (ret != EFI_BUFFER_TOO_SMALL) { - printf("%2d: %s: (not defined)\n", i + 1, var_name); + printf("%2d: %ls: (not defined)\n", i + 1, var_name16); continue; }
@@ -1378,7 +1369,7 @@ static int show_efi_boot_order(void) goto out; }
- printf("%2d: %s: %ls\n", i + 1, var_name, lo.label); + printf("%2d: %ls: %ls\n", i + 1, var_name16, lo.label);
free(data); } -- 2.30.2

On Mon, May 24, 2021 at 11:56:55AM +0200, Heinrich Schuchardt wrote:
Simplify the creation of indexed variable names like 'Boot0000' by using function efi_create_indexed_name().
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
cmd/efidebug.c | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 4c0facd26c..9c3ba73d61 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -227,8 +227,7 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, { int capsule_id; char *endp;
- char var_name[12];
- u16 var_name16[12], *p;
- u16 var_name16[12]; efi_guid_t guid; struct efi_capsule_result_variable_header *result = NULL; efi_uintn_t size;
@@ -259,9 +258,8 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, if (capsule_id < 0 || capsule_id > 0xffff) return CMD_RET_USAGE;
sprintf(var_name, "Capsule%04X", capsule_id);
p = var_name16;
utf8_utf16_strncpy(&p, var_name, 9);
efi_create_indexed_name(var_name16, sizeof(var_name16),
"Capsule", capsule_id);
}
size = 0;
@@ -954,8 +952,7 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, { int id; char *endp;
- char var_name[9];
- u16 var_name16[9], *p;
- u16 var_name16[9]; efi_guid_t guid; size_t label_len, label_len16; u16 *label;
@@ -988,9 +985,8 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, if (*endp != '\0' || id > 0xffff) return CMD_RET_USAGE;
sprintf(var_name, "Boot%04X", id);
p = var_name16;
utf8_utf16_strncpy(&p, var_name, 9);
efi_create_indexed_name(var_name16, sizeof(var_name16),
"Boot", id); /* label */ label_len = strlen(argv[2]);
@@ -1107,8 +1103,7 @@ static int do_efi_boot_rm(struct cmd_tbl *cmdtp, int flag, efi_guid_t guid; int id, i; char *endp;
- char var_name[9];
- u16 var_name16[9], *p;
u16 var_name16[9]; efi_status_t ret;
if (argc == 1)
@@ -1120,10 +1115,8 @@ static int do_efi_boot_rm(struct cmd_tbl *cmdtp, int flag, if (*endp != '\0' || id > 0xffff) return CMD_RET_FAILURE;
sprintf(var_name, "Boot%04X", id);
p = var_name16;
utf8_utf16_strncpy(&p, var_name, 9);
efi_create_indexed_name(var_name16, sizeof(var_name16),
ret = EFI_CALL(efi_set_variable(var_name16, &guid, 0, 0, NULL)); if (ret) { printf("Cannot remove %ls\n", var_name16);"Boot", id);
@@ -1313,8 +1306,7 @@ static int show_efi_boot_order(void) u16 *bootorder; efi_uintn_t size; int num, i;
- char var_name[9];
- u16 var_name16[9], *p16;
- u16 var_name16[9]; void *data; struct efi_load_option lo; efi_status_t ret;
@@ -1344,16 +1336,15 @@ static int show_efi_boot_order(void)
num = size / sizeof(u16); for (i = 0; i < num; i++) {
sprintf(var_name, "Boot%04X", bootorder[i]);
p16 = var_name16;
utf8_utf16_strncpy(&p16, var_name, 9);
efi_create_indexed_name(var_name16, sizeof(var_name16),
"Boot", i);
size = 0; ret = EFI_CALL(efi_get_variable(var_name16, &efi_global_variable_guid, NULL, &size, NULL)); if (ret != EFI_BUFFER_TOO_SMALL) {
printf("%2d: %s: (not defined)\n", i + 1, var_name);
}printf("%2d: %ls: (not defined)\n", i + 1, var_name16); continue;
@@ -1378,7 +1369,7 @@ static int show_efi_boot_order(void) goto out; }
printf("%2d: %s: %ls\n", i + 1, var_name, lo.label);
printf("%2d: %ls: %ls\n", i + 1, var_name16, lo.label);
free(data); }
-- 2.30.2
Reviewed-by: Ilias Apalodimas ilias.apalodimas@linaro.org

Use efi_get_variable_int() instead of EFI_CALL(RT->get_variable()). Use efi_set_variable_int() instead of EFI_CALL(efi_set_variable()).
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- cmd/efidebug.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 9c3ba73d61..c6352719dd 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -12,6 +12,7 @@ #include <efi_load_initrd.h> #include <efi_loader.h> #include <efi_rng.h> +#include <efi_variable.h> #include <exports.h> #include <hexdump.h> #include <log.h> @@ -239,8 +240,9 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, guid = efi_guid_capsule_report; if (argc == 1) { size = sizeof(var_name16); - ret = EFI_CALL(RT->get_variable(L"CapsuleLast", &guid, NULL, - &size, var_name16)); + ret = efi_get_variable_int(L"CapsuleLast", &guid, NULL, + &size, var_name16, NULL); + if (ret != EFI_SUCCESS) { if (ret == EFI_NOT_FOUND) printf("CapsuleLast doesn't exist\n"); @@ -263,13 +265,13 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, }
size = 0; - ret = EFI_CALL(RT->get_variable(var_name16, &guid, NULL, &size, NULL)); + ret = efi_get_variable_int(var_name16, &guid, NULL, &size, NULL, NULL); if (ret == EFI_BUFFER_TOO_SMALL) { result = malloc(size); if (!result) return CMD_RET_FAILURE; - ret = EFI_CALL(RT->get_variable(var_name16, &guid, NULL, &size, - result)); + ret = efi_get_variable_int(var_name16, &guid, NULL, &size, + result, NULL); } if (ret != EFI_SUCCESS) { free(result); @@ -1062,11 +1064,11 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, goto out; }
- ret = EFI_CALL(efi_set_variable(var_name16, &guid, - EFI_VARIABLE_NON_VOLATILE | - EFI_VARIABLE_BOOTSERVICE_ACCESS | - EFI_VARIABLE_RUNTIME_ACCESS, - size, data)); + ret = efi_set_variable_int(var_name16, &guid, + EFI_VARIABLE_NON_VOLATILE | + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS, + size, data, false); if (ret != EFI_SUCCESS) { printf("Cannot set %ls\n", var_name16); r = CMD_RET_FAILURE; @@ -1117,7 +1119,8 @@ static int do_efi_boot_rm(struct cmd_tbl *cmdtp, int flag,
efi_create_indexed_name(var_name16, sizeof(var_name16), "Boot", id); - ret = EFI_CALL(efi_set_variable(var_name16, &guid, 0, 0, NULL)); + ret = efi_set_variable_int(var_name16, &guid, 0, 0, NULL, + false); if (ret) { printf("Cannot remove %ls\n", var_name16); return CMD_RET_FAILURE; @@ -1416,11 +1419,11 @@ static int do_efi_boot_next(struct cmd_tbl *cmdtp, int flag,
guid = efi_global_variable_guid; size = sizeof(u16); - ret = EFI_CALL(efi_set_variable(L"BootNext", &guid, + ret = efi_set_variable_int(L"BootNext", &guid, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, - size, &bootnext)); + size, &bootnext, false); if (ret != EFI_SUCCESS) { printf("Cannot set BootNext\n"); r = CMD_RET_FAILURE; @@ -1477,11 +1480,11 @@ static int do_efi_boot_order(struct cmd_tbl *cmdtp, int flag, }
guid = efi_global_variable_guid; - ret = EFI_CALL(efi_set_variable(L"BootOrder", &guid, + ret = efi_set_variable_int(L"BootOrder", &guid, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, - size, bootorder)); + size, bootorder, true); if (ret != EFI_SUCCESS) { printf("Cannot set BootOrder\n"); r = CMD_RET_FAILURE; -- 2.30.2

On Mon, May 24, 2021 at 11:56:56AM +0200, Heinrich Schuchardt wrote:
Use efi_get_variable_int() instead of EFI_CALL(RT->get_variable()). Use efi_set_variable_int() instead of EFI_CALL(efi_set_variable()).
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
cmd/efidebug.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 9c3ba73d61..c6352719dd 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -12,6 +12,7 @@ #include <efi_load_initrd.h> #include <efi_loader.h> #include <efi_rng.h> +#include <efi_variable.h> #include <exports.h> #include <hexdump.h> #include <log.h> @@ -239,8 +240,9 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, guid = efi_guid_capsule_report; if (argc == 1) { size = sizeof(var_name16);
ret = EFI_CALL(RT->get_variable(L"CapsuleLast", &guid, NULL,
&size, var_name16));
ret = efi_get_variable_int(L"CapsuleLast", &guid, NULL,
&size, var_name16, NULL);
- if (ret != EFI_SUCCESS) { if (ret == EFI_NOT_FOUND) printf("CapsuleLast doesn't exist\n");
@@ -263,13 +265,13 @@ static int do_efi_capsule_res(struct cmd_tbl *cmdtp, int flag, }
size = 0;
- ret = EFI_CALL(RT->get_variable(var_name16, &guid, NULL, &size, NULL));
- ret = efi_get_variable_int(var_name16, &guid, NULL, &size, NULL, NULL); if (ret == EFI_BUFFER_TOO_SMALL) { result = malloc(size); if (!result) return CMD_RET_FAILURE;
ret = EFI_CALL(RT->get_variable(var_name16, &guid, NULL, &size,
result));
ret = efi_get_variable_int(var_name16, &guid, NULL, &size,
} if (ret != EFI_SUCCESS) { free(result);result, NULL);
@@ -1062,11 +1064,11 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, goto out; }
- ret = EFI_CALL(efi_set_variable(var_name16, &guid,
EFI_VARIABLE_NON_VOLATILE |
EFI_VARIABLE_BOOTSERVICE_ACCESS |
EFI_VARIABLE_RUNTIME_ACCESS,
size, data));
- ret = efi_set_variable_int(var_name16, &guid,
EFI_VARIABLE_NON_VOLATILE |
EFI_VARIABLE_BOOTSERVICE_ACCESS |
EFI_VARIABLE_RUNTIME_ACCESS,
if (ret != EFI_SUCCESS) { printf("Cannot set %ls\n", var_name16); r = CMD_RET_FAILURE;size, data, false);
@@ -1117,7 +1119,8 @@ static int do_efi_boot_rm(struct cmd_tbl *cmdtp, int flag,
efi_create_indexed_name(var_name16, sizeof(var_name16), "Boot", id);
ret = EFI_CALL(efi_set_variable(var_name16, &guid, 0, 0, NULL));
ret = efi_set_variable_int(var_name16, &guid, 0, 0, NULL,
if (ret) { printf("Cannot remove %ls\n", var_name16); return CMD_RET_FAILURE;false);
@@ -1416,11 +1419,11 @@ static int do_efi_boot_next(struct cmd_tbl *cmdtp, int flag,
guid = efi_global_variable_guid; size = sizeof(u16);
- ret = EFI_CALL(efi_set_variable(L"BootNext", &guid,
- ret = efi_set_variable_int(L"BootNext", &guid, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
size, &bootnext));
if (ret != EFI_SUCCESS) { printf("Cannot set BootNext\n"); r = CMD_RET_FAILURE;size, &bootnext, false);
@@ -1477,11 +1480,11 @@ static int do_efi_boot_order(struct cmd_tbl *cmdtp, int flag, }
guid = efi_global_variable_guid;
- ret = EFI_CALL(efi_set_variable(L"BootOrder", &guid,
- ret = efi_set_variable_int(L"BootOrder", &guid, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
size, bootorder));
if (ret != EFI_SUCCESS) { printf("Cannot set BootOrder\n"); r = CMD_RET_FAILURE;size, bootorder, true);
-- 2.30.2
Tested-by: Ilias Apalodimas ilias.apalodimas@linaro.org Reviewed-by: Ilias Apalodimas ilias.apalodimas@linaro.org
participants (2)
-
Heinrich Schuchardt
-
Ilias Apalodimas