Re: [PATCH 2/3] x86: Get TSC frequency from VMware hypervisor.

From: H. Peter Anvin
Date: Mon Oct 20 2008 - 21:52:56 EST


Alok Kataria wrote:
x86: Get TSC frequency from VMware hypervisor.

From: Alok N Kataria <akataria@xxxxxxxxxx>

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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/