Re: [U-Boot] [PATCH 4/9] ARM: non-sec: reset CNTVOFF to zero

2013-11-26 Thread Andre Przywara

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.zyng...@arm.com
---
  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
+   andsr0, r0, #CPUID_ARM_GENTIMER_MASK@ test arch timer bits
+   movne   r0, #0
+   mcrrne  p15, 4, r0, r0, c14 @ Reset CNTVOFF to zero
+1:
movspc, lr  @ return to non-secure SVC

  _hyp_trap:



___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 4/9] ARM: non-sec: reset CNTVOFF to zero

2013-11-26 Thread Marc Zyngier
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.zyng...@arm.com
 ---
   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
 +andsr0, r0, #CPUID_ARM_GENTIMER_MASK@ test arch timer bits
 +movne   r0, #0
 +mcrrne  p15, 4, r0, r0, c14 @ Reset CNTVOFF to zero
 +1:
  movspc, lr  @ return to non-secure SVC

   _hyp_trap:

 
 


-- 
Jazz is not dead. It just smells funny...

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot