
25 Jul
2024
25 Jul
'24
1:57 p.m.
Hi Caleb,
+/**
- efi_capsule_update_info_gen_ids - generate GUIDs for the images
- Generate the image_type_id for each image in the update_info.images array
- using the first compatible from the device tree and a salt
- UUID defined at build time.
- Returns: status code
- */
+static efi_status_t efi_capsule_update_info_gen_ids(void)
I think efi_gen_capsule_guids() is a better name
+{
int ret, i;
struct uuid namespace;
const char *compatible; /* Full array including null bytes */
struct efi_fw_image *fw_array;
fw_array = update_info.images;
/* Check if we need to run (there are images and we didn't already generate their IDs) */
if (!update_info.num_images ||
memchr_inv(&fw_array[0].image_type_id, 0, sizeof(fw_array[0].image_type_id)))
return EFI_SUCCESS;
ret = uuid_str_to_bin(CONFIG_EFI_CAPSULE_NAMESPACE_GUID,
(unsigned char *)&namespace, UUID_STR_FORMAT_GUID);
if (ret) {
log_debug("%s: EFI_CAPSULE_NAMESPACE_GUID is invalid: %d\n", __func__, ret);
return EFI_UNSUPPORTED;
EFI_INVALID_PARAMETER is a better return code for this and the check that follows
}
compatible = ofnode_read_string(ofnode_root(), "compatible");
if (!compatible) {
log_debug("%s: model or compatible not defined\n", __func__);
return EFI_UNSUPPORTED;
}
for (i = 0; i < update_info.num_images; i++) {
gen_v5_guid(&namespace,
&fw_array[i].image_type_id,
compatible, strlen(compatible),
fw_array[i].fw_name, u16_strlen(fw_array[i].fw_name) * sizeof(uint16_t),
NULL);
log_debug("Image %ls UUID %pUl\n", fw_array[i].fw_name,
&fw_array[i].image_type_id);
}
return EFI_SUCCESS;
+}
/**
- efi_fill_image_desc_array - populate image descriptor array
- @image_info_size: Size of @image_info
- @image_info: Image information
@@ -282,8 +331,11 @@ static efi_status_t efi_fill_image_desc_array( return EFI_BUFFER_TOO_SMALL; } *image_info_size = total_size;
if (efi_capsule_update_info_gen_ids() != EFI_SUCCESS)
return EFI_UNSUPPORTED;
When you make the changes above do ret = efi_gen_capsule_guids() if (ret != EFI_SUCESS) return ret;
fw_array = update_info.images; *descriptor_count = update_info.num_images; *descriptor_version = EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION; *descriptor_size = sizeof(*image_info);
-- 2.45.2
Other than that, this patch looks ok
Cheers /Ilias