I reread the System Controller Firmware 101 - Resource Management Service guide and reviewed the SCFW API Reference and I think I may be able to answer some of my own questions about parents, children, owners, and masters. The following is what I extrapolated, so please correct me if I am wrong.
- There are no owners of partitions. There are only masters and parent/child relationships between partitions. A master is a resource that has the ability to create child partitions. Partitions own resources.
When the system boots, there is one single partition and every resource is a member of it. The SCU M4, General Purpose M4, A35 cluster, and SECO M0+ are resources within this partitions but also masters. The SCU M4 takes the liberty of "holding" onto itself and the resources it will use and pushing the rest into a child partition. The original partition, now considered the SCFW partition, contains just the SCU M4 and the resources it will use. The child of this original partition, now considered the Boot partition, contains the General Purpose M4, A35 Cluster, and SECO M0+ masters along with the rest of the system resources.
The SCU M4 is a master and a member of the SCFW partition which is the parent of the Boot partition. Therefore the SCU M4 has the ability to create child partitions using resources from the SCFW partition or the Boot partition (assuming the Boot partition was created to allow the parent to access its resources). The General Purpose M4 is a master and a member of the Boot partition, but can only create child partitions using resources from the Boot partition. Any partition the General Purpose M4 makes will be a child of the Boot partition by default, but it can assign such a partition to be a child of some other partition.
I'm still not sure if a resource can belong to more than one partition. By the general definition of a partition, it should not, but slide 31 in the document AMF-AUT-T3360.pdf shows what looks like resources belonging to more than one partition (they are labeled as domains in the image, though). The return errors for sc_rm_assign_resource and sc_rm_move_all don't seem to indicate the possibility of failing to assign a resource to two different child partitions.
The following questions are also still not clear:
- What exactly are the resources SC_R_M4_0_PID0 to SC_R_M4_0_PID4?
- With respect to the sc_rm_set_subsys_rsrc_movable function, where can I find a list of all subsystems and all resource identifiers that belong to those subsystems? It seems the API call allows one to pass any resource belonging to a subsystem in order to make all related sources (whatever they are) movable.
- What does it mean for a partition to be "secure" with respect to the sc_rm_partition_alloc function?