fix(ff-a): boot info version matches partition version
According to FF-A spec beginning in version v1.1, when SPMC passes the
boot information blob to a partition, it should set the FF-A version in
the boot information header to the version specified by the partition in
its manifest.
See FF-A v1.3 ALP1 5.4.2 Boot information header for more information.
Signed-off-by: Kathleen Capella <kathleen.capella@arm.com>
Change-Id: I19a79be4bb7fa9e524e47ecff1e3d9e76b5a7031
diff --git a/src/boot_info.c b/src/boot_info.c
index 129d7be..7d9f013 100644
--- a/src/boot_info.c
+++ b/src/boot_info.c
@@ -20,13 +20,14 @@
* Initializes the ffa_boot_info_header in accordance to the specification.
*/
static void ffa_boot_info_header_init(struct ffa_boot_info_header *header,
- size_t blob_size)
+ size_t blob_size,
+ enum ffa_version vm_ffa_version)
{
assert(header != NULL);
assert(blob_size != 0U);
header->signature = FFA_BOOT_INFO_SIG;
- header->version = FFA_BOOT_INFO_VERSION;
+ header->version = vm_ffa_version;
header->info_blob_size = blob_size;
header->desc_size = sizeof(struct ffa_boot_info_desc);
header->desc_count = 0;
@@ -92,7 +93,8 @@
* requested information into the boot info memory.
*/
bool ffa_boot_info_node(struct fdt_node *boot_info_node,
- struct partition_pkg *pkg)
+ struct partition_pkg *pkg,
+ enum ffa_version vm_ffa_version)
{
struct memiter data;
struct ffa_boot_info_header *boot_info_header;
@@ -121,7 +123,8 @@
* descriptors. The size of boot info contents to be incremented,
* depending on the info specified in the partition's FF-A manifest.
*/
- ffa_boot_info_header_init(boot_info_header, boot_info_size);
+ ffa_boot_info_header_init(boot_info_header, boot_info_size,
+ vm_ffa_version);
if (!fdt_is_compatible(boot_info_node, "arm,ffa-manifest-boot-info")) {
dlog_verbose("The node 'boot-info' is not compatible.\n");