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? 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: > _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm