When TSC frequency is known (retrieved from hypervisor), we should skip
TSC refined calibration by setting X86_FEATURE_TSC_KNOWN_FREQ.
Signed-off-by: Alexey Makhalov <redacted>
---
arch/x86/kernel/cpu/vmware.c | 2 ++
1 file changed, 2 insertions(+)
When TSC frequency is known (retrieved from hypervisor), we should skip
TSC refined calibration by setting X86_FEATURE_TSC_KNOWN_FREQ.
Signed-off-by: Alexey Makhalov <redacted>
---
arch/x86/kernel/cpu/vmware.c | 2 ++
1 file changed, 2 insertions(+)
The same trick is being used in Xen/Jailhouse/KVM code already and
Hyper-V overwrites x86_platform.calibrate_tsc/x86_platform.calibrate_cpu
hooks to basically achive the same goal. Should we maybe introduce a
flag in 'struct hypervisor_x86' or something like that to unify all
this?
Just a suggestion.
--
Vitaly
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Hi Vitaly,
I believe, it is responsibility of each guest code to set X86_FEATURE_TSC_KNOWN_FREQ cap.
Regarding VMware guest, there is a case where vmware_tsc_khz is zero (not provided by hypervisor)
and TSC frequency should be calculated.
Sorry for late response.
Regards,
—Alexey
On Jan 5, 2021, at 5:06 AM, Vitaly Kuznetsov [off-list ref] wrote:
Alexey Makhalov [off-list ref] writes:
quoted
When TSC frequency is known (retrieved from hypervisor), we should skip
TSC refined calibration by setting X86_FEATURE_TSC_KNOWN_FREQ.
Signed-off-by: Alexey Makhalov <redacted>
---
arch/x86/kernel/cpu/vmware.c | 2 ++
1 file changed, 2 insertions(+)
{
setup_force_cpu_cap(X86_FEATURE_CONSTANT_TSC);
setup_force_cpu_cap(X86_FEATURE_TSC_RELIABLE);
+ if (vmware_tsc_khz)
+ setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ);
if (vmware_hypercall_mode == CPUID_VMWARE_FEATURES_ECX_VMCALL)
setup_force_cpu_cap(X86_FEATURE_VMCALL);
else if (vmware_hypercall_mode == CPUID_VMWARE_FEATURES_ECX_VMMCALL)
The same trick is being used in Xen/Jailhouse/KVM code already and
Hyper-V overwrites x86_platform.calibrate_tsc/x86_platform.calibrate_cpu
hooks to basically achive the same goal. Should we maybe introduce a
flag in 'struct hypervisor_x86' or something like that to unify all
this?
Just a suggestion.
--
Vitaly