Fix a couple of bugs in the ITS support code:
authorkettenis <kettenis@openbsd.org>
Sat, 11 Aug 2018 11:16:43 +0000 (11:16 +0000)
committerkettenis <kettenis@openbsd.org>
Sat, 11 Aug 2018 11:16:43 +0000 (11:16 +0000)
commit2896618da4e75f488a1577b82f5e3d47d2fc6fa6
tree8b074d2c27ce26ca428edabb01658e2b28f56e13
parentcf9a5b10aaed1cb66248d58670df9f0e20016e66
Fix a couple of bugs in the ITS support code:

- Don't dereference sc_prop if we're not handling an LPI.  Fixes a crash
  on qemu when emulating a GICv3 without ITS (and therefore no LPIs(.

- Use the true IPL when calculating the priority of an LPI.  The old
  code used a variable that still had the IPL_MPSAFE flag in it.

- Write to the right GITS_BASERn instead of ialways writing to GITS_BASER0.

- Flush the cache after initializing/modifying the in-memory tables.  The
  GICv3 on the SynQuacer isn't fully coherent and only supports the
  "non-shareable" attribute for its in-memory tables.  So we have to flush
  the cache to the point of coherency to guarentee that the GIC sees our
  changes to those tables.  Throw in a full memory barrier for good measure.

Also add support for the SynQuacer pre-ITS.

ok jsg@, patrick@
sys/arch/arm64/dev/agintc.c