Thread (30 messages) 30 messages, 5 authors, 2013-02-04

[PATCHv5 15/16] ARM: hyp: initialize CNTVOFF to zero

From: Marc Zyngier <hidden>
Date: 2013-02-01 11:43:23

Hi Dave,

On 01/02/13 11:13, Dave Martin wrote:
On Thu, Jan 31, 2013 at 12:15:38PM +0000, Mark Rutland wrote:
quoted
From: Marc Zyngier <redacted>

In order to be able to use the virtual counter in a safe way,
make sure it is initialized to zero before dropping to SVC.

Signed-off-by: Marc Zyngier <redacted>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Dave Martin <dave.martin@arm.com>
---
 arch/arm/kernel/hyp-stub.S | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S
index 65b2417..455603a 100644
--- a/arch/arm/kernel/hyp-stub.S
+++ b/arch/arm/kernel/hyp-stub.S
@@ -152,6 +152,9 @@ THUMB(	orr	r7, #(1 << 30)	)	@ HSCTLR.TE
 	mrc	p15, 4, r7, c14, c1, 0	@ CNTHCTL
 	orr	r7, r7, #3		@ PL1PCEN | PL1PCTEN
 	mcr	p15, 4, r7, c14, c1, 0	@ CNTHCTL
+	mov	r6, #0
+	mov	r7, #0
+	mcrr	p15, 4, r6, r7, c14	@ CNTVOFF
Is this required for safety, or is it more a sanity feature?

The architected timer counters are supposed to be monotonic time sources
only, so applying a random offset shouldn't really change anything.

The main thing I can think of is that it is easier for the host to
manage guests' virtual counter offsets if the host's offset is 0 (and
we don't really want to be changing the host offset after the host kernel
boots).
As you noticed, the offset itself doesn't matter as long as it is
constant. However, setting it to zero makes it nicer to the hypervisor:
no need to remember the host offset, just reset it to zero when exiting
a guest.

	M.
-- 
Jazz is not dead. It just smells funny...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help