mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-08 10:08:47 +00:00
PSCI: Introduce cache and barrier wrappers
The PSCI implementation performs cache maintenance operations on its data structures to ensure their visibility to both cache-coherent and non-cache-coherent participants. These cache maintenance operations can be skipped if all PSCI participants are cache-coherent. When HW_ASSISTED_COHERENCY build option is enabled, we assume PSCI participants are cache-coherent. For usage abstraction, this patch introduces wrappers for PSCI cache maintenance and barrier operations used for state coordination: they are effectively NOPs when HW_ASSISTED_COHERENCY is enabled, but are applied otherwise. Also refactor local state usage and associated cache operations to make it clearer. Change-Id: I77f17a90cba41085b7188c1345fe5731c99fad87 Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
This commit is contained in:
parent
d4593e4713
commit
a10d3632ac
5 changed files with 85 additions and 39 deletions
|
@ -154,17 +154,17 @@ exit:
|
|||
*/
|
||||
if (rc == PSCI_E_SUCCESS) {
|
||||
/*
|
||||
* Set the affinity info state to OFF. This writes directly to
|
||||
* main memory as caches are disabled, so cache maintenance is
|
||||
* Set the affinity info state to OFF. When caches are disabled,
|
||||
* this writes directly to main memory, so cache maintenance is
|
||||
* required to ensure that later cached reads of aff_info_state
|
||||
* return AFF_STATE_OFF. A dsbish() ensures ordering of the
|
||||
* return AFF_STATE_OFF. A dsbish() ensures ordering of the
|
||||
* update to the affinity info state prior to cache line
|
||||
* invalidation.
|
||||
*/
|
||||
flush_cpu_data(psci_svc_cpu_data.aff_info_state);
|
||||
psci_flush_cpu_data(psci_svc_cpu_data.aff_info_state);
|
||||
psci_set_aff_info_state(AFF_STATE_OFF);
|
||||
dsbish();
|
||||
inv_cpu_data(psci_svc_cpu_data.aff_info_state);
|
||||
psci_dsbish();
|
||||
psci_inv_cpu_data(psci_svc_cpu_data.aff_info_state);
|
||||
|
||||
#if ENABLE_RUNTIME_INSTRUMENTATION
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue