Turns out the integration of the GIC-500 on the Rockchip RK3399 is busted.
authorkettenis <kettenis@openbsd.org>
Wed, 15 Aug 2018 21:46:29 +0000 (21:46 +0000)
committerkettenis <kettenis@openbsd.org>
Wed, 15 Aug 2018 21:46:29 +0000 (21:46 +0000)
commit16b913cdedfd3c236fe2dba2f99b743fd1ed3a53
tree2d33d2281cdfa5df553f837395c60f7b609ac470
parent5ce1efbd42e09d934ac06e1d7068ede49944e0d6
Turns out the integration of the GIC-500 on the Rockchip RK3399 is busted.
It treats all access to the memory mapped registers as "secure" even if
we're running in non-secure mode.  As a result, during bringup of OpenBSD
on the RK3399, I got confused and tweaked the interrupt priorities in a way
that is wrong (but worked on the RK3399.

Fix those priorities to match what they should be according to the
documentation (and works on other hardware that includes a GICv3) and
add code that detects the broken RK3399 GIC and adjusts the priorities
accordingly.  Also remove (broken) code that tries to mess around with
group 0 interrupts and fix setting bits in the GICD_CTLR register on the
broken RK3399 GIC.
sys/arch/arm64/dev/agintc.c