This is a rebase of the old patchset from Roman for HyperV VMBus
implementation.
How to use:
-device vmbus-bridge
Later on new paravirtualized devices can be implemented on top of it
(Network/SCSI/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.
v4:
Decided to ditch the patch that envolves handling of EOM as there is
still a discussion going on with it in the KVM mailing list.
v3:
Fixed an error asan
v2:
Rebased on top of latest patchset from Roman and Maciej
Jon Doron (6):
hyperv: expose API to determine if synic is enabled
vmbus: add vmbus protocol definitions
vmbus: vmbus implementation
i386:pc: whitelist dynamic vmbus-bridge
i386: Hyper-V VMBus ACPI DSDT entry
vmbus: add infrastructure to save/load vmbus requests
Makefile.objs | 1 +
hw/hyperv/Kconfig | 5 +
hw/hyperv/Makefile.objs | 1 +
hw/hyperv/hyperv.c | 8 +
hw/hyperv/trace-events | 18 +
hw/hyperv/vmbus.c | 2778 ++++++++++++++++++++++++++++++
hw/i386/acpi-build.c | 43 +
hw/i386/pc_piix.c | 2 +
hw/i386/pc_q35.c | 2 +
include/hw/hyperv/hyperv.h | 1 +
include/hw/hyperv/vmbus-bridge.h | 35 +
include/hw/hyperv/vmbus-proto.h | 222 +++
include/hw/hyperv/vmbus.h | 230 +++
13 files changed, 3346 insertions(+)
create mode 100644 hw/hyperv/trace-events
create mode 100644 hw/hyperv/vmbus.c
create mode 100644 include/hw/hyperv/vmbus-bridge.h
create mode 100644 include/hw/hyperv/vmbus-proto.h
create mode 100644 include/hw/hyperv/vmbus.h