On 26/11/13 14:41, Andre Przywara wrote: > On 11/21/2013 09:59 AM, Marc Zyngier wrote: >> Before switching to non-secure, make sure that CNTVOFF is set >> to zero on all CPUs. Otherwise, kernel running in non-secure >> without HYP enabled (hence using virtual timers) may observe >> timers that are not synchronized, effectively seeing time >> going backward... > > Under what circumstances would native Linux use the virtual timers? When > VIRT_EXT is not defined? Yes. In general, when the kernel is not entered in HYP mode. M. > Regards, > Andre. > >> >> Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx> >> --- >> arch/arm/cpu/armv7/nonsec_virt.S | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/arch/arm/cpu/armv7/nonsec_virt.S b/arch/arm/cpu/armv7/nonsec_virt.S >> index 648066f..bbacbce 100644 >> --- a/arch/arm/cpu/armv7/nonsec_virt.S >> +++ b/arch/arm/cpu/armv7/nonsec_virt.S >> @@ -53,7 +53,14 @@ _secure_monitor: >> mrceq p15, 0, r0, c12, c0, 1 @ get MVBAR value >> mcreq p15, 4, r0, c12, c0, 0 @ write HVBAR >> #endif >> + bne 1f >> >> + @ Reset CNTVOFF to 0 before leaving monitor mode >> + mrc p15, 0, r0, c0, c1, 1 @ read ID_PFR1 >> + ands r0, r0, #CPUID_ARM_GENTIMER_MASK @ test arch timer bits >> + movne r0, #0 >> + mcrrne p15, 4, r0, r0, c14 @ Reset CNTVOFF to zero >> +1: >> movs pc, lr @ return to non-secure SVC >> >> _hyp_trap: >> > > -- Jazz is not dead. It just smells funny... _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm