Allwinner hardware sucks! The ARM generic timer on the A64 has a bug
authorkettenis <kettenis@openbsd.org>
Mon, 9 Jan 2023 15:22:53 +0000 (15:22 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 9 Jan 2023 15:22:53 +0000 (15:22 +0000)
commitaeac2e0a35f5acaa7ab2f64c201ad7f62eaf0a38
tree599f16365819b92190b9df32e25caad92bd53ec3
parent571ef328e27d66c47b64f38a34e59b725984f90f
Allwinner hardware sucks!  The ARM generic timer on the A64 has a bug
where the bottom 9 bits of the counter register can't be trusted if any of
the higher bits are rolling over.  This is an unpublished errata so the
details aren't known.  Adopt the same workaround that Linux has.

This will disable the userland timecounter support on hardware affected
by the hardware.  We will need a similar workaround in libc to restore
that functionality.

tested by semarie@
ok cheloha@
sys/arch/arm64/dev/agtimer.c
sys/arch/arm64/include/timetc.h