Messages in this thread | | | From | Jianyong Wu <> | Subject | RE: [PATCH v15 6/9] arm64/kvm: Add hypercall service for kvm ptp. | Date | Tue, 24 Nov 2020 05:11:52 +0000 |
| |
Hi Marc,
> -----Original Message----- > From: Marc Zyngier <maz@kernel.org> > Sent: Monday, November 23, 2020 7:59 PM > To: Jianyong Wu <Jianyong.Wu@arm.com> > Cc: Justin He <Justin.He@arm.com>; kvm@vger.kernel.org; > netdev@vger.kernel.org; richardcochran@gmail.com; linux- > kernel@vger.kernel.org; sean.j.christopherson@intel.com; Steven Price > <Steven.Price@arm.com>; Andre Przywara <Andre.Przywara@arm.com>; > john.stultz@linaro.org; yangbo.lu@nxp.com; pbonzini@redhat.com; > tglx@linutronix.de; nd <nd@arm.com>; will@kernel.org; > kvmarm@lists.cs.columbia.edu; linux-arm-kernel@lists.infradead.org > Subject: Re: [PATCH v15 6/9] arm64/kvm: Add hypercall service for kvm ptp. > > On 2020-11-23 10:44, Marc Zyngier wrote: > > On 2020-11-11 06:22, Jianyong Wu wrote: > >> ptp_kvm will get this service through SMCC call. > >> The service offers wall time and cycle count of host to guest. > >> The caller must specify whether they want the host cycle count or the > >> difference between host cycle count and cntvoff. > >> > >> Signed-off-by: Jianyong Wu <jianyong.wu@arm.com> > >> --- > >> arch/arm64/kvm/hypercalls.c | 61 > >> +++++++++++++++++++++++++++++++++++++ > >> include/linux/arm-smccc.h | 17 +++++++++++ > >> 2 files changed, 78 insertions(+) > >> > >> diff --git a/arch/arm64/kvm/hypercalls.c > >> b/arch/arm64/kvm/hypercalls.c index b9d8607083eb..f7d189563f3d > 100644 > >> --- a/arch/arm64/kvm/hypercalls.c > >> +++ b/arch/arm64/kvm/hypercalls.c > >> @@ -9,6 +9,51 @@ > >> #include <kvm/arm_hypercalls.h> > >> #include <kvm/arm_psci.h> > >> > >> +static void kvm_ptp_get_time(struct kvm_vcpu *vcpu, u64 *val) { > >> + struct system_time_snapshot systime_snapshot; > >> + u64 cycles = ~0UL; > >> + u32 feature; > >> + > >> + /* > >> + * system time and counter value must captured in the same > >> + * time to keep consistency and precision. > >> + */ > >> + ktime_get_snapshot(&systime_snapshot); > >> + > >> + // binding ptp_kvm clocksource to arm_arch_counter > >> + if (systime_snapshot.cs_id != CSID_ARM_ARCH_COUNTER) > >> + return; > >> + > >> + val[0] = upper_32_bits(systime_snapshot.real); > >> + val[1] = lower_32_bits(systime_snapshot.real); > > > > What is the endianness of these values? I can't see it defined > > anywhere, and this is likely not to work if guest and hypervisor don't > > align. > > Scratch that. This is all passed via registers, so the endianness of the data is > irrelevant. Please discard any comment about endianness I made in this > review. > Yeah, these data process and transfer are no relationship with endianness. Thanks.
> The documentation aspect still requires to be beefed up.
So the endianness description will be "no endianness restriction".
Thanks Jianyong
> > Thanks, > > M. > -- > Jazz is not dead. It just smells funny...
| |