Hi Dongli, > On 1/1/24 14:06, Tao Lyu wrote: >> Hello Arnabjyoti, Sean, and everyone, >> >> I'm having a similiar but slightly differnt issue about the rdtsc in KVM. >> >> I want to obtain the timestamp counter of physical/host machine inside the VMs. >> >> Acccording to the previous threads, I know I need to disable the offsetting, VM exit, and scaling. >> I specify the correspoding parameters in the qemu arguments. >> The booting command is listed below: >> >> qemu-system-x86_64 -m 10240 -smp 4 -chardev socket,id=SOCKSYZ,server=on,nowait,host=localhost,port=3258 -mon chardev=SOCKSYZ,mode=control -display none -serial stdio -device virtio-rng-pci -enable-kvm -cpu host,migratable=off,tsc=on,rdtscp=on,vmx-tsc-offset=off,vmx-rdtsc-exit=off,tsc-scale=off,tsc-adjust=off,vmx-rdtscp-exit=off -netdev bridge,id=hn40 -device virtio-net,netdev=hn40,mac=e6:c8:ff:09:76:38 -hda XXX -kernel XXX -append "root=/dev/sda console=ttyS0" >> >> >> But the rdtsc still returns the adjusted tsc. >> The vmxcap script shows the TSC settings as below: >> >> Use TSC offsetting no >> RDTSC exiting no >> Enable RDTSCP no >> TSC scaling yes >> >> >> I would really appreciate it if anyone can tell me whether and how I can get the tsc of physical machine insdie the VM. > If the objective is to obtain the same tsc at both VM and host side (that is, to > avoid any offset or scaling), I can obtain quite close tsc at both VM and host > side with the below linux-6.6 change. > My env does not use tsc scaling. > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 41cce50..b102dcd 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c >@@ -2723,7 +2723,7 @@ static void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 data) > bool synchronizing = false; > > raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags); > - offset = kvm_compute_l1_tsc_offset(vcpu, data); > + offset = 0; > ns = get_kvmclock_base_ns(); > elapsed = ns - kvm->arch.last_tsc_nsec; > > Dongli Zhang Hi Dongli, Thank you so much for the explanation and for providing a patch. It works for me now. Wish you a happy new year. Best, Tao