> -----Original Message----- > From: Marc Zyngier <maz@xxxxxxxxxx> > Sent: Wednesday, August 19, 2020 6:39 PM > To: Jianyong Wu <Jianyong.Wu@xxxxxxx> > Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>; Peng Hao > <richard.peng@xxxxxxxx>; kernel-team@xxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; > Will Deacon <will@xxxxxxxxxx>; Catalin Marinas <Catalin.Marinas@xxxxxxx>; > Alexander Graf <graf@xxxxxxxxxx>; kvmarm@xxxxxxxxxxxxxxxxxxxxx; linux- > arm-kernel@xxxxxxxxxxxxxxxxxxx > Subject: Re: [PATCH 47/56] KVM: arm64: timers: Move timer registers to the > sys_regs file > > On 2020-08-19 11:18, Jianyong Wu wrote: > >> -----Original Message----- > >> From: Marc Zyngier <maz@xxxxxxxxxx> > >> Sent: Wednesday, August 19, 2020 6:00 PM > >> To: Jianyong Wu <Jianyong.Wu@xxxxxxx> > >> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>; Peng Hao > >> <richard.peng@xxxxxxxx>; kernel-team@xxxxxxxxxxx; > >> kvm@xxxxxxxxxxxxxxx; Will Deacon <will@xxxxxxxxxx>; Catalin Marinas > >> <Catalin.Marinas@xxxxxxx>; Alexander Graf <graf@xxxxxxxxxx>; > >> kvmarm@xxxxxxxxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > >> Subject: Re: [PATCH 47/56] KVM: arm64: timers: Move timer registers > >> to the sys_regs file > >> > >> On 2020-08-19 10:24, Jianyong Wu wrote: > >> > Hi Marc, > >> > > >> > -----Original Message----- > >> > From: kvmarm-bounces@xxxxxxxxxxxxxxxxxxxxx > >> > <kvmarm-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Marc Zyngier > >> > Sent: Thursday, August 6, 2020 1:57 AM > >> > To: Paolo Bonzini <pbonzini@xxxxxxxxxx> > >> > Cc: Peng Hao <richard.peng@xxxxxxxx>; kernel-team@xxxxxxxxxxx; > >> > kvm@xxxxxxxxxxxxxxx; Will Deacon <will@xxxxxxxxxx>; Catalin Marinas > >> > <Catalin.Marinas@xxxxxxx>; Alexander Graf <graf@xxxxxxxxxx>; > >> > kvmarm@xxxxxxxxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > >> > Subject: [PATCH 47/56] KVM: arm64: timers: Move timer registers to > >> > the sys_regs file > >> > > >> > Move the timer gsisters to the sysreg file. This will further help > >> > when they are directly changed by a nesting hypervisor in the VNCR > >> > page. > >> > > >> > This requires moving the initialisation of the timer struct so that > >> > some of the helpers (such as arch_timer_ctx_index) can work > >> > correctly at an early stage. > >> > > >> > Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx> > >> > --- > >> > arch/arm64/include/asm/kvm_host.h | 6 ++ > >> > arch/arm64/kvm/arch_timer.c | 155 +++++++++++++++++++++++------- > >> > arch/arm64/kvm/trace_arm.h | 8 +- > >> > include/kvm/arm_arch_timer.h | 11 +-- > >> > 4 files changed, 136 insertions(+), 44 deletions(-) > >> > > >> > +static u64 timer_get_offset(struct arch_timer_context *ctxt) { > >> > + struct kvm_vcpu *vcpu = ctxt->vcpu; > >> > + > >> > + switch(arch_timer_ctx_index(ctxt)) { > >> > + case TIMER_VTIMER: > >> > + return __vcpu_sys_reg(vcpu, CNTVOFF_EL2); > >> > + default: > >> > + return 0; > >> > + } > >> > +} > >> > + > >> > Can I export this helper? As in my ptp_kvm implementation I need > >> > get VCNT offset value separately not just give me a result of VCNT. > >> > >> Sorry, you need to give me a bit more context. What do you need the > >> offset for exactly? > > > > Yeah, > > In my ptp_kvm implementation, I need acquire wall time and counter > > cycle in the same time in host. After get host counter cycle, I need > > subtract it by VCNT offset to obtain VCNT. See > > https://lkml.org/lkml/2020/6/19/441 > > https://lkml.org/lkml/2020/6/19/441 > > But now I can't get the VCNT offset easily like before using " > > vcpu_vtimer(vcpu)->cntvoff" and I can't use the helper like > > "kvm_arm_timer_read" as I need acquire the counter cycle in the same > > time with the host wall time. > > I must be missing something. CNTVOFF_EL2 is now implemented as a standard > system register, and has the same visibility as any other vcpu sysreg. > > Why doesn't vcpu_read_sys_reg(vcpu, CNTVOFF_EL2) work for you? Maybe it serves me, let me try it, thanks. Thanks Jianyong > > M. > -- > Jazz is not dead. It just smells funny...