Lines Matching refs:to

8    ``plat_get_aff_state()`` APIs to enable the generic PSCI code to
10 system. This approach is inflexible because a change to the topology
13 It would be much simpler for the platform to describe its power domain tree
16 #. The generic PSCI code generates MPIDRs in order to populate the power domain
17 tree. It also uses an MPIDR to find a node in the tree. The assumption that
20 levels in the power domain tree to four.
22 Therefore, there is a need to decouple allocation of MPIDRs from the
23 mechanism used to populate the power domain topology tree.
26 over the sibling nodes at a particular level to find a specified power
28 a 'start' to an 'end' power level. The binary search is required to find the
29 node at each level. The natural way to perform this traversal is to
30 start from a leaf node and follow the parent node pointer to reach the end
33 Therefore, there is a need to define data structures that implement the tree in
38 using an MPIDR. There is no requirement to perform state coordination while
41 Therefore, there is a need to implement the tree in a way which facilitates this
62 #. Each subsequent entry corresponds to a power domain and contains the number
65 #. The size of the array minus the first entry will be equal to the number of
68 #. The value in each entry in the array is used to find the number of entries
69 to consider at the next level. The sum of the values (number of children) of
73 The following example power domain topology tree will be used to describe the
125 unique number (core index) between ``0`` and ``PLAT_CORE_COUNT - 1`` to each core
126 power domain. MPIDRs could be allocated in any manner and will not be used to
130 corresponding to the MPIDR. It will return an error (-1) if an MPIDR is passed
131 which is not allocated or corresponds to an absent core. The semantics of this
132 platform API have changed since it is required to validate the passed MPIDR. It
135 Another mandatory API, ``plat_my_core_pos()`` has been added to return the core
136 index for the calling core. This API provides a more lightweight mechanism to get
137 the index since there is no need to validate the MPIDR of the calling core.
140 such that, if the core nodes are numbered from left to right, then the index
143 relationship allows the core nodes to be allocated in a separate array
150 For platforms where the number of allocated MPIDRs is equal to the number of
151 core power domains, for example, Juno and FVPs, the logic to convert an MPIDR to
153 proof hash function to do this.
158 used by the platform is not equal to the number of core power domains.
160 The platform could adopt one of the following approaches to deal with this
163 #. Implement more complex logic to convert a valid MPIDR to a core index while
171 is equal to the size of the range of MPIDRs allocated. This approach will
172 lead to memory wastage since entries will be allocated in the tree but will
173 allow use of a simpler logic to convert an MPIDR to a core index.
179 to represent leaf and non-leaf power domain nodes in the tree.
185 * is used to track the state of all the nodes i.e. power domain instances
231 algorithm to parse the power domain descriptor exported by the platform to
298 provides an MPIDR. The ``plat_core_pos_by_mpidr()`` function is used to validate
299 the MPIDR before using it to find the corresponding core node. The non-core power
300 domain nodes do not need to be identified.