VMT(4) (x86)

VMT(4) | Device Drivers Manual (x86) | VMT(4)

# NAME

`vmt` — VMware Tools driver

# SYNOPSIS

`vmt0 at cpu0`

# DESCRIPTION

The `vmt` driver is a kernel level implementation of VMware Tools. VMware Tools are intended to provide better support for operating systems running inside virtual machines.

`vmt` handles shutdown, reboot, resume requests from the host by sending events using sysmon_pswitch(9) of type PSWITCH_TYPE_POWER, PSWITCH_TYPE_RESET, and PSWITCH_TYPE_SLEEP that can be handled by powerd(8). `vmt` will log notifications that the guest has been suspended or resumed by the host.

`vmt` reports the guest's hostname and first non-loopback IP address to the host.

## Clock synchronization

The `vmt` driver synchronizes the virtual machine's clock with the host clock in the following situations:

- When the virtual machine resumes after having been suspended.
- Periodically with the interval indicated by the machdep.vmt0.clock_sync.period sysctl(8) variable. This is done so that the virtual machine can keep its clock synchronized when the host is suspended, because in this case the `vmt` driver receives no notification of such an event. Setting this tunable to zero disables clock synchronization.

# SEE ALSO

powerd(8)

# HISTORY

The `vmt` driver first appeared in OpenBSD 4.4 and was then ported to NetBSD 6.0.

# AUTHORS

The `vmt` driver was written by David Gwynne <dlg@openbsd.org>.

# BUGS

`vmt` is known to cause a conflict with vmtoolsd(8) from `open-vm-tools`. `vmt` works by establishing an RPC channel called TCLO between VMware guest and host to receive controlling messages from the host. The problem is that `vmt` is essentially a subset of vmtoolsd(8), and they both use the same RPC channel, but TCLO is never meant to be simultaneously used by two distinct services in the same VM guest. So when vmtoolsd(8) is running while also `vmt` is active, they continually fight for the channel, both get rejected by the confused VM host, and neither one can establish a stable communication line.

So before launching vmtoolsd(8) the `vmt` driver should be detached by running:

    # drvctl -d vmt0

And after terminating vmtoolsd(8) the `vmt` driver should be re-attached by running:

    # drvctl -r -a cpufeaturebus cpu0

October 6, 2013 | NetBSD 11.0