On Fri, Oct 27, 2017 at 10:34:24AM +0200, Christoffer Dall wrote: > Using the physical counter allows KVM to retain the offset between the > virtual and physical counter as long as it is actively running a VCPU. > > As soon as a VCPU is released, another thread is scheduled or we start > running userspace applications, we reset the offset to 0, so that > userspace accessing the virtual timer can still read the virtual counter > and get the same view of time as the kernel. > > This opens up potential improvements for KVM performance, but we have to > make a few adjustments to preserve system consistency. > > Currently get_cycles() is hardwired to arch_counter_get_cntvct() on > arm64, but as we move to using the physical timer for the in-kernel > time-keeping on systems that boot in EL2, we should use the same counter > for get_cycles() as for other in-kernel timekeeping operations. > > Similarly, implementations of arch_timer_set_next_event_phys() is > modified to use the counter specific to the timer being programmed. > > VHE kernels or kernels continuing to use the virtual timer are > unaffected. > > Cc: Catalin Marinas <catalin.marinas@xxxxxxx> > Cc: Will Deacon <will.deacon@xxxxxxx> > Cc: Mark Rutland <mark.rutland@xxxxxxx> > Acked-by: Marc Zyngier <marc.zyngier@xxxxxxx> > Signed-off-by: Christoffer Dall <cdall@xxxxxxxxxx> Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx>