Hi Marc, > -----Original Message----- > From: Marc Zyngier <maz@xxxxxxxxxx> > Sent: Tuesday, February 2, 2021 10:15 PM > To: Jianyong Wu <Jianyong.Wu@xxxxxxx> > Cc: netdev@xxxxxxxxxxxxxxx; yangbo.lu@xxxxxxx; john.stultz@xxxxxxxxxx; > tglx@xxxxxxxxxxxxx; pbonzini@xxxxxxxxxx; richardcochran@xxxxxxxxx; Mark > Rutland <Mark.Rutland@xxxxxxx>; will@xxxxxxxxxx; Suzuki Poulose > <Suzuki.Poulose@xxxxxxx>; Andre Przywara <Andre.Przywara@xxxxxxx>; > Steven Price <Steven.Price@xxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; linux- > arm-kernel@xxxxxxxxxxxxxxxxxxx; kvmarm@xxxxxxxxxxxxxxxxxxxxx; > kvm@xxxxxxxxxxxxxxx; Steve Capper <Steve.Capper@xxxxxxx>; Justin He > <Justin.He@xxxxxxx>; nd <nd@xxxxxxx> > Subject: Re: [PATCH v16 0/9] Enable ptp_kvm for arm/arm64 > > On 2020-12-09 06:09, Jianyong Wu wrote: > > Currently, we offen use ntp (sync time with remote network clock) to > > sync time in VM. But the precision of ntp is subject to network delay > > so it's difficult to sync time in a high precision. > > > > kvm virtual ptp clock (ptp_kvm) offers another way to sync time in VM, > > as the remote clock locates in the host instead of remote network > > clock. > > It targets to sync time between guest and host in virtualization > > environment and in this way, we can keep the time of all the VMs > > running in the same host in sync. In general, the delay of > > communication between host and guest is quiet small, so ptp_kvm can > > offer time sync precision up to in order of nanosecond. Please keep in > > mind that ptp_kvm just limits itself to be a channel which transmit > > the remote clock from host to guest and leaves the time sync jobs to > > an application, eg. > > chrony, > > in usersapce in VM. > > > > How ptp_kvm works: > > After ptp_kvm initialized, there will be a new device node under /dev > > called ptp%d. A guest userspace service, like chrony, can use this > > device to get host walltime, sometimes also counter cycle, which > > depends on the service it calls. Then this guest userspace service can > > use those data to do the time sync for guest. > > here is a rough sketch to show how kvm ptp clock works. > > > > |----------------------------| > > |--------------------------| > > | guest userspace | | host > > | > > |ioctl -> /dev/ptp%d | | > > | > > | ^ | | | > > | > > |----------------------------| | > > | > > | | | guest kernel | | > > | > > | | V (get host walltime/counter cycle) > > | > > | ptp_kvm -> hypercall - - - - - - - - - - ->hypercall service > > | > > | <- - - - - - - - - - - - > > | > > |----------------------------| > > |--------------------------| > > > > 1. time sync service in guest userspace call ptp device through > > /dev/ptp%d. > > 2. ptp_kvm module in guest receives this request then invoke hypercall > > to route into host kernel to request host walltime/counter cycle. > > 3. ptp_kvm hypercall service in host response to the request and send > > data back. > > 4. ptp (not ptp_kvm) in guest copy the data to userspace. > > > > This ptp_kvm implementation focuses itself to step 2 and 3 and step 2 > > works in guest comparing step 3 works in host kernel. > > FWIW, and in order to speed up the review, I've posted a reworked > version[0] of this series with changes that address the comments I had for on > v16. > Great!!! Good news for me, thanks Marc. Thanks Jianyong > Thanks, > > M. > > [0] https://lore.kernel.org/r/20210202141204.3134855-1-maz@xxxxxxxxxx > -- > Jazz is not dead. It just smells funny...