Skip to content
Commit ebc84d7b authored by Peter Hoyes's avatar Peter Hoyes Committed by Tom Rini
Browse files

armv8: generic_timer: Use event stream for udelay



Polling cntpct_el0 in a tight loop for delays is inefficient.
This is particularly apparent on Arm FVPs, which do not simulate
real time, meaning that a 1s sleep can take a couple of orders
of magnitude longer to execute in wall time.

If running at EL2 or above (where CNTHCTL_EL2 is available), enable
the cntpct_el0 event stream temporarily and use wfe to implement
the delay more efficiently. The event period is chosen as a
trade-off between efficiency and the fact that Arm FVPs do not
typically simulate real time.

This is only implemented for Armv8 boards, where an architectural
timer exists, and only enabled by default for the ARCH_VEXPRESS64
board family.

Signed-off-by: default avatarPeter Hoyes <Peter.Hoyes@arm.com>
Reviewed-by: default avatarAndre Przywara <andre.przywara@arm.com>
parent b18a3c18
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment