]> git.proxmox.com Git - mirror_qemu.git/commit
vmbus: vmbus implementation
authorJon Doron <arilou@gmail.com>
Fri, 24 Apr 2020 12:34:41 +0000 (15:34 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 10 Jun 2020 16:09:40 +0000 (12:09 -0400)
commit0d71f7082d7aeec8d9767e32dbf7dd86b94b8260
treeac154d25d79e082e6143f457006c39211a77efeb
parent973b1fbd862c848dde7f710ba1b9ca340235e75f
vmbus: vmbus implementation

Add the VMBus infrastructure -- bus, devices, root bridge, vmbus state
machine, vmbus channel interactions, etc.

VMBus is a collection of technologies.  At its lowest layer, it's a message
passing and signaling mechanism, allowing efficient passing of messages to and
from guest VMs.  A layer higher, it's a mechanism for defining channels of
communication, where each channel is tagged with a type (which implies a
protocol) and a instance ID.  A layer higher than that, it's a bus driver,
serving as the basis of device enumeration within a VM, where a channel can
optionally be exposed as a paravirtual device.  When a server-side (paravirtual
back-end) component wishes to offer a channel to a guest VM, it does so by
specifying a channel type, a mode, and an instance ID.  VMBus then exposes this
in the guest.

More information about VMBus can be found in the file
vmbuskernelmodeclientlibapi.h in Microsoft's WDK.

TODO:
 - split into smaller palatable pieces
 - more comments
 - check and handle corner cases

Kudos to Evgeny Yakovlev (formerly eyakovlev@virtuozzo.com) and Andrey
Smetatin (formerly asmetanin@virtuozzo.com) for research and
prototyping.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
Signed-off-by: Jon Doron <arilou@gmail.com>
Message-Id: <20200424123444.3481728-4-arilou@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Makefile.objs
hw/hyperv/Kconfig
hw/hyperv/Makefile.objs
hw/hyperv/trace-events [new file with mode: 0644]
hw/hyperv/vmbus.c [new file with mode: 0644]
include/hw/hyperv/vmbus-bridge.h [new file with mode: 0644]
include/hw/hyperv/vmbus.h [new file with mode: 0644]