0d651e4e65
Switching between reading the virtual or physical counters is problematic, as some core code wants a view of time before we're fully set up. Using a function pointer and switching the source after the first read can make time appear to go backwards, and having a check in the read function is an unfortunate block on what we want to be a fast path. Instead, this patch makes us always use the virtual counters. If we're a guest, or don't have hyp mode, we'll use the virtual timers, and as such don't care about CNTVOFF as long as it doesn't change in such a way as to make time appear to travel backwards. As the guest will use the virtual timers, a (potential) KVM host must use the physical timers (which can wake up the host even if they fire while a guest is executing), and hence a host must have CNTVOFF set to zero so as to have a consistent view of time between the physical timers and virtual counters. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Marc Zyngier <marc.zyngier@arm.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Cc: Rob Herring <rob.herring@calxeda.com> |
||
---|---|---|
.. | ||
acpi_pm.c | ||
arm_arch_timer.c | ||
bcm2835_timer.c | ||
bcm_kona_timer.c | ||
cadence_ttc_timer.c | ||
clksrc-dbx500-prcmu.c | ||
clksrc-of.c | ||
cs5535-clockevt.c | ||
cyclone.c | ||
dw_apb_timer_of.c | ||
dw_apb_timer.c | ||
em_sti.c | ||
exynos_mct.c | ||
i8253.c | ||
Kconfig | ||
Makefile | ||
metag_generic.c | ||
mmio.c | ||
mxs_timer.c | ||
nomadik-mtu.c | ||
samsung_pwm_timer.c | ||
scx200_hrt.c | ||
sh_cmt.c | ||
sh_mtu2.c | ||
sh_tmu.c | ||
sun4i_timer.c | ||
tcb_clksrc.c | ||
tegra20_timer.c | ||
time-armada-370-xp.c | ||
timer-marco.c | ||
timer-prima2.c | ||
vt8500_timer.c |