PSCI: Lookup list of parent nodes to lock only once
authorAndrew F. Davis <afd@ti.com>
Tue, 4 Jun 2019 14:46:54 +0000 (10:46 -0400)
committerAndrew F. Davis <afd@ti.com>
Thu, 6 Jun 2019 15:31:47 +0000 (11:31 -0400)
commit74d27d006279753f2036b6d3ccfdc6c4357c96d8
tree2378d87a318f427aadf288764a79ab0aa7291415
parent0f95565c40d54188dd072fe2b429046dbbd9a6a3
PSCI: Lookup list of parent nodes to lock only once

When acquiring or releasing the power domain locks for a given CPU the
parent nodes are looked up by walking the up the PD tree list on both the
acquire and release path, only one set of lookups is needed. Fetch the
parent nodes first and pass this list into both the acquire and release
functions to avoid the double lookup.

This also allows us to not have to do this lookup after coherency has
been exited during the core power down sequence. The shared struct
psci_cpu_pd_nodes is not placed in coherent memory like is done
for psci_non_cpu_pd_nodes and doing so would negatively affect
performance. With this patch we remove the need to have it in coherent
memory by moving the access out of psci_release_pwr_domain_locks().

Signed-off-by: Andrew F. Davis <afd@ti.com>
Change-Id: I7b9cfa9d31148dea0f5e21091c8b45ef7fe4c4ab
lib/psci/psci_common.c
lib/psci/psci_off.c
lib/psci/psci_private.h
lib/psci/psci_suspend.c