Messages in this thread | | | Date | Mon, 20 Oct 2008 18:52:12 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH 2/3] x86: Get TSC frequency from VMware hypervisor. |
| |
Alok Kataria wrote: > x86: Get TSC frequency from VMware hypervisor. > > From: Alok N Kataria <akataria@vmware.com> > > This patch adds functions to detect if we are running under VMware. > The current way to check if we are on VMware is following, > # check if "hypervisor present bit" is set, if so read the 0x40000000 > cpuid leaf and check for "VMwareVMware" signature. > # if the above fails, check the DMI vendors name for "VMware" string > if we find one we query the VMware backdoor port to check if we are > under VMware. > > The DMI + Backdoor check is needed for older VMware products, which > don't implement the hypervisor signature cpuid leaf. > Also note that since we are checking for the DMI signature the backdoor > port would never be accessed on native hardware. > > This patch also adds a hypervisor_get_tsc_freq function, instead of > calibrating the frequency which can be error prone in virtualized > environment, we ask the hypervisor for it. We get the frequency from > the hypervisor by accessing the backdoor port if we are running on VMware. > Other hypervisors too can add code to get frequency on their platform > to this routine. >
I would like to see, instead of calling vmware_platform() directly in places like tsc.c, a hypervisor field in the CPU structure that is set with the rest of the CPU identification stuff. That way we avoid ending up with garbage like:
if (vmware_platform() || xen_platform() || kvm_platform() ...)
-hpa
| |