Re: [PATCH 00/14] RFC: VMCI for Linux

From: Jidong Xiao
Date: Fri Feb 24 2012 - 00:24:44 EST


On Tue, 14 Feb 2012 17:05:41, "Andrew Stiegmann (stieg)"
<astiegmann@xxxxxxxxxx> wrote:
> In an effort to improve the out-of-the-box experience with Linux
> kernels for VMware users, VMware is working on readying the Virtual
> Machine Communication Interface (VMCI) and VMCI Sockets (vsock) kernel
> modules for inclusion in the Linux kernel. The purpose of this initial
> post is to both show how much we love Linux on Valentine's day and
> request early feedback on the VMCI kernel module with the
> intent of addressing any major issues early in the process. The VMCI
> Socket kernel module will be presented in a later post.
> VMCI allows virtual machines to communicate with host kernel modules
> and the VMware hypervisors. User level applications both in a virtual
> machine and on the host can use VMCI through VMCI Sockets, a socket
> address family designed to be compatible with UDP and TCP at the
> interface level. Today, VMCI and VMCI Sockets are used by the VMware
> shared folders (HGFS) and various VMware Tools components inside the
> guest for zero-config, network-less access to VMware host services. In
> addition to this, VMware's users are using VMCI Sockets for various
> applications, where network access of the virtual machine is
> restricted or non-existent. Examples of this are VMs communicating
> with device proxies for proprietary hardware running as host
> applications and automated testing of applications running within
> virtual machines.
> In a virtual machine, VMCI is exposed as a regular PCI device. The
> primary communication mechanisms supported are a point-to-point
> bidirectional transport based on a pair of memory-mapped queues, and
> asynchronous notifications in the form of datagrams and
> doorbells. These features are available to kernel level components
> such as HGFS and VMCI Sockets through the VMCI kernel API. In addition
> to this, the VMCI kernel API provides support for receiving events
> related to the state of the VMCI communication channels, and the
> virtual machine itself.
> Outside the virtual machine, the host side support of the VMCI kernel
> module makes the same VMCI kernel API available to VMCI endpoints on
> the host. In addition to this, the host side manages each VMCI device
> in a virtual machine through a context object. This context object
> serves to identify the virtual machine for communication, and to track
> the resource consumption of the given VMCI device. Both operations
> related to communication between the virtual machine and the host
> kernel, and those related to the management of the VMCI device state
> in the host kernel, are invoked by the user level component of the
> hypervisor through a set of ioctls on the VMCI device node.  To
> provide seamless support for nested virtualization, where a virtual
> machine may use both a VMCI PCI device to talk to its hypervisor, and
> the VMCI host side support to run nested virtual machines, the VMCI
> host and virtual machine support are combined in a single kernel
> module.
> For additional information about the use of VMCI and in particular
> VMCI Sockets, please refer to the VMCI Socket Programming Guide
> available at https://www.vmware.com/support/developer/vmci-sdk/.

Hi, Andrew,

Are your patches used for communication between a Linux guest OS and
VMware host? What if I want a Guest OS running on top of Linux/KVM to
communicate with the Linux/KVM hypervisor? Or two guest OSes running
on top of Linux/KVM.

Regards
Jidong
--
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/