If you boot an aarch64 machine on real hardware, you are greeted with:
warning: no time-of-day clock registered, system time will not be set accurately
After reading the code, it appears that the EFI runtime services get/set clock calls are not used.
For reference, there is an implementation in the stable/10/sys/ia64/ia64/efi.c although it is a little strange in that it attaches to the ia64 nexus driver. See efi_get_time() / efi_set_time() and the nexus clock driver.
The impact of this is that aarch64 machines boot up on Jan 1st, 1970 and are unable to do dnssec validation. This affects ntp.conf if you have dns names in there.
*** Bug 212184 has been marked as a duplicate of this bug. ***
Warner has patches to start supporting the runtime services, but these would need testing on arm64.
*** Bug 220048 has been marked as a duplicate of this bug. ***
There is a patch in review D12650. This depends on base r324495.
Patch (w/ additional fix) tested on my SoftIron OverDrive 1000.
A commit references this bug:
Date: Tue Nov 21 17:23:16 UTC 2017
New revision: 326066
Add a driver for the EFI RTC. This uses the EFI Runtime Services to query
the system time.
As we seem to only read this time on boot, and this is the only source of
time on many arm64 machines we need to enable this by default there. As
this is not always the case with U-Boot firmware, or when we have been
booted from a non-UEFI environment we only enable the device driver when
the Runtime Services are present and reading the time doesn't result in an
Reviewed by: imp, kib
Tested by: emaste
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D12650
This can't be MFCd as it relies on other changes that would break KBI of struct pcb.