mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-30 08:07:59 +00:00
efi_selftest: implement printing GUIDs
The ESRT test may try to print a GUID if an error occurs. Implement the %pU print code. Correct the ESRT test to use %pU instead of %pUl to avoid the output of character 'l'. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
parent
983a5a2e72
commit
7884a0986d
2 changed files with 29 additions and 4 deletions
|
@ -70,6 +70,28 @@ static void printx(u64 p, int prec, u16 **buf)
|
||||||
*buf = pos;
|
*buf = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* print_guid() - print GUID to an u16 string
|
||||||
|
*
|
||||||
|
* @p: GUID to print
|
||||||
|
* @buf: pointer to buffer address,
|
||||||
|
* on return position of terminating zero word
|
||||||
|
*/
|
||||||
|
static void print_uuid(u8 *p, u16 **buf)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const u8 seq[] = {
|
||||||
|
3, 2, 1, 0, '-', 5, 4, '-', 7, 6, '-',
|
||||||
|
8, 9, 10, 11, 12, 13, 14, 15 };
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof(seq); ++i) {
|
||||||
|
if (seq[i] == '-')
|
||||||
|
*(*buf)++ = u'-';
|
||||||
|
else
|
||||||
|
printx(p[seq[i]], 2, buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print an unsigned 32bit value as decimal number to an u16 string
|
* Print an unsigned 32bit value as decimal number to an u16 string
|
||||||
*
|
*
|
||||||
|
@ -212,6 +234,9 @@ void efi_st_printc(int color, const char *fmt, ...)
|
||||||
con_out->output_string(con_out, u);
|
con_out->output_string(con_out, u);
|
||||||
pos = buf;
|
pos = buf;
|
||||||
break;
|
break;
|
||||||
|
case 'U':
|
||||||
|
print_uuid(va_arg(args, void*), &pos);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
--c;
|
--c;
|
||||||
printx((uintptr_t)va_arg(args, void *),
|
printx((uintptr_t)va_arg(args, void *),
|
||||||
|
|
|
@ -121,28 +121,28 @@ static bool lib_test_check_uuid_entry(struct efi_system_resource_table *esrt,
|
||||||
for (u32 idx = 0; idx < filled_entries; idx++) {
|
for (u32 idx = 0; idx < filled_entries; idx++) {
|
||||||
if (!guidcmp(&entry[idx].fw_class, &img_info->image_type_id)) {
|
if (!guidcmp(&entry[idx].fw_class, &img_info->image_type_id)) {
|
||||||
if (entry[idx].fw_version != img_info->version) {
|
if (entry[idx].fw_version != img_info->version) {
|
||||||
efi_st_error("ESRT field mismatch for entry with fw_class=%pUl\n",
|
efi_st_error("ESRT field mismatch for entry with fw_class=%pU\n",
|
||||||
&img_info->image_type_id);
|
&img_info->image_type_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry[idx].lowest_supported_fw_version !=
|
if (entry[idx].lowest_supported_fw_version !=
|
||||||
img_info->lowest_supported_image_version) {
|
img_info->lowest_supported_image_version) {
|
||||||
efi_st_error("ESRT field mismatch for entry with fw_class=%pUl\n",
|
efi_st_error("ESRT field mismatch for entry with fw_class=%pU\n",
|
||||||
&img_info->image_type_id);
|
&img_info->image_type_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry[idx].last_attempt_version !=
|
if (entry[idx].last_attempt_version !=
|
||||||
img_info->last_attempt_version) {
|
img_info->last_attempt_version) {
|
||||||
efi_st_error("ESRT field mismatch for entry with fw_class=%pUl\n",
|
efi_st_error("ESRT field mismatch for entry with fw_class=%pU\n",
|
||||||
&img_info->image_type_id);
|
&img_info->image_type_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry[idx].last_attempt_status !=
|
if (entry[idx].last_attempt_status !=
|
||||||
img_info->last_attempt_status) {
|
img_info->last_attempt_status) {
|
||||||
efi_st_error("ESRT field mismatch for entry with fw_class=%pUl\n",
|
efi_st_error("ESRT field mismatch for entry with fw_class=%pU\n",
|
||||||
&img_info->image_type_id);
|
&img_info->image_type_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue