From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Date: Tue, 26 Nov 2013 15:41:54 +0100 Subject: [U-Boot] [PATCH 4/9] ARM: non-sec: reset CNTVOFF to zero In-Reply-To: <1385024402-23585-5-git-send-email-marc.zyngier@arm.com> References: <1385024402-23585-1-git-send-email-marc.zyngier@arm.com> <1385024402-23585-5-git-send-email-marc.zyngier@arm.com> Message-ID: <5294B332.3050809@linaro.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > 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: >