Hi all,

Forwarding email below as the referred work may be useful/relevant for other parts of the TF-A project as well.

Best regards,
Joćo Alves


From: Hafnium <hafnium-bounces@lists.trustedfirmware.org> on behalf of Joao Alves via Hafnium <hafnium@lists.trustedfirmware.org>
Sent: Monday, August 3, 2020 5:59 PM
To: hafnium@lists.trustedfirmware.org <hafnium@lists.trustedfirmware.org>
Subject: [Hafnium] Automate generation of Partition's specific configuration
 
Hello all,

I have been trying to ease the process of adding a Secure Partition to a system using Secure Hafnium.

There is no way to automatically generate SP's specific configuration into TF-A's code-base. Considering FVP as the target platform, we need to manually add partition's specific configuration to files "fvp_tb_fw_config.dts" and "fvp_spmc_manifest.dts" (files held in FVP platform specific folder of TF-A codebase). The following snippet shows the hypervisor node from "fvp_spmc_manifest.dts", for the simple case of having in the system two Cactus Secure Partitions:

hypervisor {
     compatible = "hafnium,hafnium";
     vm1 {
          is_ffa_partition;
         debug_name = "cactus-primary";
         load_address = <0x7000000>;
         };
     vm2 {
         is_ffa_partition;
         debug_name = "cactus-secondary";
         load_address = <0x7100000>;
         vcpu_count = <2>;
         mem_size = <1048576>;
         };
};

Some of the above properties are available in the partition's manifest, for example "debug_name" and "load_address".
If changing one of these values in the partition's manifest or adding another SP, we also need to update the referred files.

In order to avoid the burden of having to manually update partition's specific configuration and to make whole system more scalable, I started to write a script that is able to generate a specific node structure and fetch any property value from a any dts file. Then, applied it to fetch/generate SPs specific configuration and include it in aforementioned configuration files.

Although it is still a Work In Progress, the work can be found in the patch: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5150.

The implementation is divided between two scripts:

  *   "dts_gen.py" - This is a generic solution for the problem. It can fetch/generate/alter any configuration using dts files.
  *   "sp_dts_gen.py" - Uses the previous command to solve the specific problem regarding SPs specific configuration.

Although is still Work In Progress, I am looking to obtain feedback/reviews from anyone that could be interested in using this implementation.
The above files contain a lot of comments on how to use them, and also describing the implementation.

If the obtained feedback is good, I can work on integrating this in TF-A's build-system.

Let me know if anyone has questions.

Best regards,
Joćo Alves




--
Hafnium mailing list
Hafnium@lists.trustedfirmware.org
https://lists.trustedfirmware.org/mailman/listinfo/hafnium