fix(gic): SGI helper to use cpu struct id affinity

The plat_interrupts_send_sgi interface uses a target list bitfield
parameter to identify the PE to which an SGI is to be sent. The target
list is infered from the target core linear id.
Furthermore, gicv3_send_sgi uses the target list combined with the
current core MPIDR Aff3 to Aff1 affinities.
This approach is slightly wrong because the target list shall be
derived from the Aff0 value of the target PE.
This used to 'work' on qemu because Aff3 to Aff1 are zero and Aff0
encodes the linear PE id. This implementation exhibits a failure on
FVP because Aff0 is zero on all cores.
This change redefines the plat_interrupts_send_sgi interface to trigger
an SGI by using the id from the cpu struct passed as parameter.
gicv3_send_sgi is made independent from MPIDR and calculates the target
list from Aff0.

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I0ab925498955d27c2b31b313e294dbcdbc4cc3f9
6 files changed
tree: 00f7b8e5bfe960bd1bed0950d31d75f7de81f3b0
  1. .vscode/
  2. build/
  3. docs/
  4. driver/
  5. inc/
  6. kokoro/
  7. project/
  8. src/
  9. test/
  10. third_party/
  11. vmlib/
  12. .clang-format
  13. .clang-tidy
  14. .gitignore
  15. .gitmodules
  16. .gn
  17. AUTHORS
  18. BUILD.gn
  19. CONTRIBUTING.md
  20. dco.txt
  21. LICENSE
  22. Makefile
  23. navbar.md
  24. README.md
README.md

Hafnium

Hafnium is a hypervisor, initially supporting aarch64 (64-bit Armv8 CPUs).

Get in touch and keep up-to-date at hafnium@lists.trustedfirmware.org. See feature requests and bugs on our bug dashboard.

Getting started

To jump in and build Hafnium, follow the getting started instructions.

If you want to contribute to the project, see details of how we accept contributions.

Documentation

More documentation is available on: