arm-trusted-firmware/docs
Jeenu Viswambharan b0408e87f7 PSCI: Optimize call paths if all participants are cache-coherent
The current PSCI implementation can apply certain optimizations upon the
assumption that all PSCI participants are cache-coherent.

  - Skip performing cache maintenance during power-up.

  - Skip performing cache maintenance during power-down:

    At present, on the power-down path, CPU driver disables caches and
    MMU, and performs cache maintenance in preparation for powering down
    the CPU. This means that PSCI must perform additional cache
    maintenance on the extant stack for correct functioning.

    If all participating CPUs are cache-coherent, CPU driver would
    neither disable MMU nor perform cache maintenance. The CPU being
    powered down, therefore, remain cache-coherent throughout all PSCI
    call paths. This in turn means that PSCI cache maintenance
    operations are not required during power down.

  - Choose spin locks instead of bakery locks:

    The current PSCI implementation must synchronize both cache-coherent
    and non-cache-coherent participants. Mutual exclusion primitives are
    not guaranteed to function on non-coherent memory. For this reason,
    the current PSCI implementation had to resort to bakery locks.

    If all participants are cache-coherent, the implementation can
    enable MMU and data caches early, and substitute bakery locks for
    spin locks. Spin locks make use of architectural mutual exclusion
    primitives, and are lighter and faster.

The optimizations are applied when HW_ASSISTED_COHERENCY build option is
enabled, as it's expected that all PSCI participants are cache-coherent
in those systems.

Change-Id: Iac51c3ed318ea7e2120f6b6a46fd2db2eae46ede
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
2017-03-02 11:00:20 +00:00
..
diagrams Initialize secondary CPUs during cold boot 2016-03-07 09:23:38 +00:00
plat Tegra: init normal/crash console for platforms 2017-02-22 09:16:34 -08:00
spd spd: dispatcher for interacting with the Trusty TEE 2016-11-08 15:50:04 -08:00
auth-framework.md Remove dashes from image names: 'BL3-x' --> 'BL3x' 2015-12-14 12:31:37 +00:00
change-log.md Release v1.3: update change-log.md 2016-10-13 15:17:39 +01:00
cpu-specific-build-macros.md Clarify errata ERRATA_A53_836870 documentation 2017-02-23 16:15:05 +00:00
firmware-design.md Merge pull request #843 from jeenu-arm/cas-lock 2017-02-20 13:59:50 +00:00
firmware-update.md Improve FWU documentation 2016-12-20 11:43:10 +00:00
interrupt-framework-design.md Docs: Clarify IRQ/FIQ handler API in Interrupt Design Guide 2016-11-17 10:04:49 +00:00
platform-migration-guide.md Remove dashes from image names: 'BL3-x' --> 'BL3x' 2015-12-14 12:31:37 +00:00
porting-guide.md PSCI: Decouple PSCI stat residency calculation from PMF 2017-02-13 14:33:06 +00:00
psci-lib-integration-guide.md PSCI: Optimize call paths if all participants are cache-coherent 2017-03-02 11:00:20 +00:00
psci-pd-tree.md Rework type usage in Trusted Firmware 2016-07-18 17:52:15 +01:00
reset-design.md Introduce the ARM TF reset design document 2015-12-15 15:14:43 +00:00
rt-svc-writers-guide.md Introduce PSCI Library Interface 2016-07-19 10:19:01 +01:00
trusted-board-boot.md Replace fip_create with fiptool 2016-07-29 10:38:46 +01:00
user-guide.md build: Define build option for hardware-assisted coherency 2017-03-02 11:00:20 +00:00